On 4/14/23 15:55, Akira TAGOH wrote:
Oops, correctly "fullname". No space.
2023年4月14日(金) 23:53 Akira TAGOH <akira@xxxxxxxxx
<mailto:akira@xxxxxxxxx>>:
2023年4月14日(金) 23:11 Idriss Fekir <mcsm224@xxxxxxxxx
<mailto:mcsm224@xxxxxxxxx>>:
On 4/14/23 12:16, Akira TAGOH wrote:
> On Thu, Apr 13, 2023 at 10:48 PM Idriss Fekir
<mcsm224@xxxxxxxxx <mailto:mcsm224@xxxxxxxxx>> wrote:
>> Sorry, my question wasn't clear, what i meant is, is there a
way in in
>> the config file to say, "if given this string, match it to
this psname,
>> or this full_name", e.g: if given "Iosevka Extrabold
Extended Oblique"
>> match it to the font with
psname:"Iosevka-Extrabold-Extended-Oblique".
>
> No. we could guess a postscript name from family and/or
fullname but
> it is't perfect because they are stored as independent
metadata. they
> are free to set regardless of regularity.
>
> So you need to do compare "family" and "postscriptname"
separately.
>
>>>> My goal is, at application startup to check for fonts that
aren't
>>>> matched properly, then remap then load the config, is
there a general
>>>> solution?
>>>
>>> That depends on the meaning of "not matched". speaking of
the fallback
>>> font, that is exactly what fontconfig does. In case of your
issue,
>>> that is the case-by-case. If there are any generally useful
solutions,
>>> please let us know.
>>>
>>
>> What could be done in this particular case? that is,
>> `fc-match "Isoveka Extrabold Extended Oblique"` outputs
>> `Noto Sans Regular` instead of the correct font.
>
> You want to substitute it with Noto Sans no matter what they
exist and
> change the weight and the slant too?
No, i just want for the font to match correctly,
`fc-match "Isoveka Extrabold Extended Oblique"` should output
`iosevka-extrabold.ttc: "Iosevka" "Extrabold Extended Oblique"`
but it doesn't output that. It outputs `NotoSans-Regular.ttf: "Noto
Sans" "Regular"`, which is wrong since i do have that Iosevka font
installed.
Ah, got it. You set the wrong query string then. What you want to
would be:
$ fc-match ":full name=Isoveka Extrabold Extended Oblique"
Or
$ fc-match "Isoveka:style=Extrabold Extended Oblique"
Unfortunately none of these work correctly, they both output
`NotoSans-Regular.ttf: "Noto Sans" "Regular"` (the exact same output as
`fc-match "Isoveka Extrabold Extended Oblique"`).
Though I'm not sure what the real issue was then. I presume that you
wanted to reproduce your issue on some application with fc-match?
Yes, i'm working on GIMP (it relies on pango) and since current pango
doesn't support querying through psname i'm using fullname instead,
which works in some cases but in this case doesn't (in general if
fc-match outputs the correct font when given the fullname it will work
on pango).
The only way i'm getting the correct font is with
`fc-match ":postscriptname=Iosevka-Extrabold-Extended-Oblique"`
i just want the output of:
`fc-match "Isoveka Extrabold Extended Oblique"`
to be identical to the output of:
`fc-match ":postscriptname=Iosevka-Extrabold-Extended-Oblique"`
(because matching like this with the psname outputs the correct
font)
Really sorry that my previous question wasn't clear enough.
> I didn't test but this may *theoretically* works:
>
> <match>
> <test name="fullname">
> <string>Isoveka Extrabold Extended Oblique</string>
> </test>
> <edit name="family" mode="prepend">
> <string>Noto Sans</string>
> </edit>
> <edit name="weight" mode="prepend">
> <const>regular</const>
> </edit>
> <edit name="slant" mode="prepend">
> <const>roman</const>
> </edit>
> </match>
>
> This assumes that applications request a font with fullname.
you may
> need to replace it with "family", and "style" or "weight" and
"slant"
> in some case.
> If you want to fallback only when they aren't available, that
may be
> much more complicated.
>
>> Another question, what does `FcConfigSubstituteWithPat` do,
i couldn't
>> understand from the man page.
>
> Well, there are three matching patterns in fontconfig. "pattern",
> "font", and "scan". These patterns are performed only when
"kind" is
> the same. however, if you call FcConfigSubstituteWithPat(config,
> pfont, ppat, FcMatchFont) then, you can get both "pattern" in
ppat and
> "font" in pfont FcPatterns. see FcFontRenderPrepare() for more
> details.
>
>>
>> Sorry for asking so many questions.
>>
>> Thank.
>> --
>> Idriss
>
>
>
Thank a lot.
--
Idriss
Thanks a lot.
So sorry, i didn't add the mailing list email in CC.
--
Idriss