[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