Могу ли я получить значение кернинга двух символов, используя PIL? - PullRequest
0 голосов
/ 20 января 2010

Можно ли получить значение кернинга двух символов в шрифте, используя PIL?

Ответы [ 3 ]

3 голосов
/ 21 января 2010

Ответ, как сказал Игнасио, нет.

Это была серьезная часть этого ответа. А теперь для чего-то совершенно другого:

вы можете приблизить a (не * , так как вы не можете узнать, используя только PIL, каков размер шрифта дизайна em) кернинга, используя что-то вроде:

import ImageFont
SAMPLE_SIZE= 128 # should provide sufficient resolution for kerning values

def get_a_kerning_value(font_descriptor, char1, char2):
    """See if there is some kerning value defined for a pair of characters
    Return the kerning value as an approximated percentage of the row height."""

    imagefont= ImageFont.truetype(font_descriptor, SAMPLE_SIZE)

    width1= imagefont.getsize(char1)[0]
    width2= imagefont.getsize(char2)[0]
    widths, height= imagefont.getsize(char1 + char2)

    return (widths - (width1 + width2))/float(height)
1 голос
/ 20 января 2010

Нет, PIL может использоваться только для визуализации текста, но не для получения его метрик. Чтобы получить информацию о кернинге, вам нужно будет использовать либо соответствующие функции Windows API, либо библиотеку FreeType (для которой нет стабильных привязок Python).

0 голосов
/ 05 мая 2018

Существует kern-dump, который будет выгружать значения kern для всех пар глифов в файле шрифта:

https://github.com/adobe-type-tools/kern-dump

...