[Fontconfig] Matching font by unicode coverage

David Lattimore dml at google.com
Mon Jan 19 12:36:02 PST 2015


Matching with an FC_CHARSET works for me. No idea if what I'm doing is
right, but roughly what I do is:
- Identify script for each character (using
http://unicode.org/Public/UNIDATA/Scripts.txt)
- Split runs based on script (so that no run has two different scripts)
- Build an FC_CHARSET for the run.
- Match and use the resulting font.

So if a font didn't define all the characters in a script, I might still
get some missing glyphs. But it seems to work reasonably well. If I wanted
to make sure all characters had glyphs, I could probably so a second round
of splitting where adjacent characters for which no glyphs was found were
broken off into a separate text run and rematched. So far I haven't
bothered.

Hope that helps.

On 19 January 2015 at 22:51, Sam Varshavchik <mrsam at courier-mta.com> wrote:

> Akira TAGOH writes:
>
>  That way is what Pango do to figure out the glyph coverage in fonts. they
>> convert the result into their own structure so that it's not that easy to
>> find out a font that have the certain coverage in fontconfig only.
>>
>
> You mean match by FC_CHARSET? That was the first part of what I'm trying
> to figure out, whether creating an FcCharset containing the unicode
> characters in the text, and then trying to match a font using it, will work.
>
>
>  On Mon, Jan 19, 2015 at 12:51 PM, Sam Varshavchik <<URL:mailto:
>> mrsam at courier-mta.com>mrsam at courier-mta.com> wrote:
>>
>>    I'm learning the fontconfig API, and I'm trying to figure out how to do
>>    the following.
>>
>>    I have arbitrary Unicode text, and I would like to match a reasonable
>> font
>>    to use for displaying it. It's possible that I might need more than one
>>    font if, say, the text is a mixture of Latin characters and Asian
>>    ideographs.
>>
>>    I see that FC_CHARSET is an option to FcPattern. Does this sound like
>> I'm
>>    on the right track:
>>
>>    A) Construct an FcCharset and add all unicode characters in the text to
>>    display
>>
>>    B) Add it as a FC_CHARSET value to an FcPattern.
>>
>>    C) Use FcFontList() to search for the matching font.
>>
>>    The developer reference contains the following statement: "Fontconfig
>> uses
>>    some of these properties for font matching and font completion. Others
>> are
>>    provided as a convenience for the application's rendering mechanism."
>>
>>    So, I guess I'm trying to clarify whether I can use the FC_CHARSET
>>    property to search for fonts that have coverage for my unicode text,
>> or if
>>    this a non-searchable property, only.
>>
>
>
> _______________________________________________
> Fontconfig mailing list
> Fontconfig at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/fontconfig
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/fontconfig/attachments/20150120/0a3d9729/attachment.html>


More information about the Fontconfig mailing list