TrueType Font Parsing в C - PullRequest
       6

TrueType Font Parsing в C

7 голосов
/ 05 июля 2010

Я хочу прочитать ttf и нарисовать текст с этим шрифтом в буфере. Несмотря на то, что для этой задачи существуют библиотеки типа freetype, gd, я хочу написать свой собственный код. Можете ли вы посоветовать мне, как выполнить эту задачу?

Ответы [ 4 ]

8 голосов
/ 05 июля 2010

Если вы не являетесь одним из ведущих в мире экспертов в области шрифтов, типографики и систем письма, ответ прост: НЕ .TrueType / OpenType имеет много таблиц, которые необходимо поддерживать для правильного рендеринга, и даже при использовании FreeType (это библиотека крайне низкого уровня), большинство людей ошибаются.

Если вам нужно сделать низко- уровень детерминированной обработки шрифтов между платформами, по крайней мере, вы должны использовать FreeType и libotf.Это предоставит вам доступ к глифам и контурам, которые вы можете затем отобразить так, как вам нравится.В большинстве случаев использование процедур рендеринга текста в вашей графической системе будет намного проще и менее подвержено ошибкам.

Наконец, если вы настаиваете на игнорировании моего совета, хороший RTFS для FreeType и онлайн-ресурсы Microsoft, объясняющие таблицыв TrueType / OpenType шрифты, пожалуй, лучшее место для начала.

3 голосов
/ 06 августа 2014

Я бы предложил вам

  1. Читать все документы TTF, которые вы можете найти

  2. Найдите все парсеры TTF с открытым исходным кодом и средства визуализации, которые вы можете найти, на разных языках, таких как Freetype (c / c ++), Batik (java) и все, что вы можете найти в Google. Также шрифт-кузница Джорджа Уильямса, вероятно, будет очень полезен для вас в вашем путешествии.

  3. Разорвите все программы, которые вы собрали в 1. и посмотрите, как они работают. Посмотрите, сможете ли вы сделать крошечную маленькую примерную программу, которая сделает что-то простое, например, выгрузит список точек для контура буквы «I».

  4. Работайте над растеризацией. Начните с чего-то очень простого, например растеризации буквы «л».

Проблема с TTF заключается в том, что здесь не простой формат файла, а freetype обрабатывает множество сумасшедших деталей для вас. Однако, если вас не волнует переносимость, и у вас уже есть определенный файл TTF, который вы хотите визуализировать, и вам нужен только маленький простой алфавит, такой как латиница или кириллица, возможно, все в порядке.

Также вы можете проверить список документации TTF, на которую я ссылался из моего маленького проекта https://github.com/donbright/font_to_svg/

0 голосов
/ 22 июля 2017

Не невозможно, для всех, кто испытывает желание попробовать. Мне было любопытно делать это, потому что мне нравится подход DIY-графики, когда я выделяю часть памяти и записываю в нее, а затем сохраняю как jpg или png. Я скопировал растровый шрифт из giflib, но это строго 8x8 пикселей.

Несколько ссылок: http://stevehanov.ca/blog/index.php?id=143 https://github.com/kv01/ttf-parser https://www.google.com/search?q=ttf+parser+c&ie=utf-8&oe=utf-8

И я попытался сделать отступ в 4 и использовать кнопку {}, но строки все еще обернуты.

0 голосов
/ 05 июля 2010

поскольку R .. писал в то же время, что и я в своем комментарии, я бы не стал предлагать создавать другой TTF-парсер самостоятельно. Если вы хотите освоить эту область компьютерных наук "spannende", я бы порекомендовал "Искусство компьютерного программирования", том 2 от Дональда Кнута. (это Metafont, а не TTF, но доказано, что он правильный: -)

...