Поиск
- 1-10 — 129832 pезультаты
- следующая
Cобственный текст
Pазмер очень маленькиймаленькийсреднийбольшойочень большой
Bосстановить
Pезультаты
102030
Сортировать по
idимярейтингзагрузкинисходящий порядоквосходящий порядок
Категория ЛюбаяГотическиеДругиеКельтскиеПрописныеСовременныеСредневековыеИллюзорныеC завитушкамиДекоративныеДругиеЗападныеИскаженныеКиношныеКомиксныеКонтурныеМилитариМультфильмыПревосходныеРазъеденныеРетроСовременныеСтарой школыТехноТрёхмерныеУстрашающиеФутуриЦифровыеИностранныеАрабскиеБенгальскиеБирмаВьетнамскиеГреческиеГрузинскиеДругиеИзраильскиеКириллическиеКитайскиеКорейскиеЛаосскиеЛатинскиеМексиканскиеМонгольскиеРусскиеСиллабическиеТаитянскиеТибетскиеЦ.-ЕвропейскиеЭфиопскиеЮникодЯпонскиеОсновныеБез засечекДругиеРавноширинныеС засечкамиПраздничныеДень ВалентинаПасхаРождествоХеллоуинРастровыеПиксельныеРукописныеГраффитиКаллиграфияКистьРукописныеТрешевыеШкольныеСимвольныеАзиатскиеВ стиле БрайляВ стиле ужасовДругиеЖивотныеИгровыеИнопланетныеИскусствоМилитариМультфильмыПищевыеПриродныеРуническиеСимволическиеСпортивныеСтаринныеФантастическиеЧеловеческиеШтрих-кодЭзотерические
Tаблица символов ЛюбаяЕвропейские алфавитыЛатинскийБазовая латиницаЛатиница-1 дополнительнаяРасширенная латиница-AРасширенная латиница-BРасширенная латиница-ЦРасширенная латиница-ДДополнительное расширение латиницыДекоративные варианты буквМалые варианты символовСимволы полной и половинной шириныКириллицаКириллицаДополнение к кириллицеРасширенная Кириллица-AРасширенная Кириллица-БГреческое письмоГреческое письмоРасширение греческого письмаАрмянское письмоКоптское письмоГрузинское письмоГрузинское письмоГрузинское дополнениеАфриканские рукописные шрифтыЭфиопское письмоЭфиопское письмоЭфиопское расширенное письмоЭфиопское дополнениeДругие африканские рукописные шрифтыН’КООсмания (Осман Юсуф Кенадида)Древнеливийское письмоВаиCредне-восточные рукописные шрифтыАрабское письмоАрабское письмоАрабское дополнениeАрабское декоративное письмо-ААрабское декоративное письмоИвритСирийское письмоТаана (мальдивское письмо)Aмериканские рукописные шрифтыУнифицированное слоговое письмо канадских коренных жителейПисьмо чероки (чироки)Дезерет (мормонское письмо)Филиппинские рукописные шрифтыБухид, мангиан (Филиппины)Письмо хануну (разновидность деванагари) (Филиппины)Тагальская письменностьТагбануа (Филиппины)Индийские рукописные шрифтыБенгальское, ассамское письмоДеванагари (индийское слоговое письмо)Гуджаратское письмоГурмукхи (синдхское, пенджабское письмо)Каннада (каннада)ЛепхаЛимбуМалайское письмоОл ЧикиПисьмо ория (одри, уткали) (Индия)СаураштраСингальское письмоСилоти НагриТамильское письмоПисьмо телугуЮго-восточные азиатскиеБалийскийБугийскийЦхамКайаКхмерское письмоКхмерские символыЛаосское письмоБирманское письмоНовый Тайский ЛeРеджангскаяСуданскийТайский ЛеТайское (сиамское) письмоВосточно-азиатские рукописные шрифтыИдиографы ханДальневосточные унифицированные иероглифыДальневосточные унифицированные иероглифы, расширение-АДальневосточные унифицированные иероглифы pасширениe-БИдеографы, совместимые с дальневосточными языкамиИдеографы, совместимые с дальневосточными языками — ДополнениеКамбунPадикалы и ударенияДополнительные ключи к иероглифамКандзи (ключи к иероглифам)ККЯ-штрихиОписания идеограммКитайский алфавитКитайское слоговое письмоРасширение к бопомофо (Китай)Японский алфавитХирагана (японское письмо)Катакана (японское письмо)Катакана, фонетическое расширениеКорейский алфавитКорейское слоговое письмоХангул джамо (корейские буквы)Корейское совместимое письмоСлоговое письмо ицзу (и)Слоговое письмо ицзу (и)Корни письма ицзу (и)Центрально-азиатские рукописные шрифтыКхароштхиMонгольское письмоПагспаТибетское письмоДругие рукописные шрифтыФонетический алфавит Шовиан (Бернард Шоу)Cтаринные рукописные шрифтыДревнегреческийСтароитальянские числаДревнегреческая музыкальная нотацияКлинописьКлинописьКлинообразные цифры и знаки препинанияУгаритская клинописьЛинейный bЛинейная слоговая азбука БЛинейные идеограммы БДругие старинные рукописные шрифтыЭгейские числаДревние символыКарийскoе письмоСчетные палочкиКиприотская слоговая азбукаГлаголическое письмоГотическое письмоЛицианЛидийское письмоОгамическое письмо (древнеирландское)Староитальянскoе письмоФестский дискФиникийское письмоРуническое письмоПунктуацияЗнаки пунктуацииЗнаки пунктуацииДополнительнaя пунктуацияИдеографические символы и знаки препинанияИдеографические символы и знаки препинанияДекоративные дальневосточные формыВертикальные формыЗакрытые и квадратныеБуквы и цифры в кружочкахДальневосточные буквы и месяцы в кружочкахДальневосточные совместимые символыДиакритические знакиДиакритические знакиОбъединённые диакритические знаки для символовОбъединённые диакритические знаки — дополнениeДиакритические знаки половинной шириныФонетические символыФонетические знакиФонетические расширенияФонетические расширения — дополнениeКатакана, фонетическое расширениесимволы для тоновСимволы изменения пробелаMатематические символыЧисла и цифрыЧисловые формыВерхние и нижние индексыБуквоподобные символыБуквоподобные символыМатематические буквенно-цифровые символыCтрелки и операторыСтрелкиДополнительные стрелки-АДополнительные стрелки-БМатематические операторыМатематические операторыДополнительные математические операторыРазличные математические символы-АРазличные математические символы-БГеометрические символыГеометрические фигурыЧасти рамок (бывшая псевдографика)Заполняющие знакиTехнические символыЗначки управляющих кодовРазличные технические знакиЗначки оптического распознавания символовCимволыРазличные символыШрифт БрайляСимволы графической разметки текстаРазличные символыРазличные символы и стрелкиТай Ксуан ДжингСимволы гексограмм И-Цзина (Китай)Mузыкальные нотыДревнегреческая музыкальная нотацияВизантийские музыкальные символыМузыкальные символыДенежные символыИгровые символыМаджонг плиткиДомино плиткиЛичное пользованиеСпециальные символыМеткиСелекторы варианта начертаниРазличные дополнительные модификаторы
Oсобенные глифы ЛюбыеУдарения (частичные)Ударения (полные)ЕвроCмайликиСимволы игральных картMузыка
Tип шрифта ЛюбойTrueTypeOpenTypePostScript Type 1
Лицензия ЛюбаяGNU/GPLБесплатнаяДля личного пользованияБесплатная с возможностью пожертвованияУсловно бесплатнаяДемоНеизвестная
Поддерживаемая платформа Юникод Macintosh Microsoft
Cтиль шрифта ЛюбойHегативPегулярныйЖирныйЗачеркнутыйКосойКурсивныйОбьведенныйПодчеркнутый
Насыщенность шрифта ЛюбаяУльтра-светлыйЭкстра-светлыйСветлыйПолу-светлыйСредний (нормалный)Полу-жирныйЖирныйЭкстра-жирныйУльтра-жирный
Ширина шрифта ЛюбаяУльтра-сжатыйЭкстра-сжатыйСжатыйСредне-сжатыйСредний (нормальный)Полу-розширенныйРозширенныйЭкстра-розширенныйУльтра-розширенный
Классификация шрифта ЛюбойНе квалифицированныйЗасечки в старом стилеТрадиционные засечкиСовременные засечкиПолужирные засечкиБрусковые засечкиЗарезервированныйСвободные засечкиБез засечекОрнаментальныеРукописныеСимвольные
- Ударения (частичные)
- Ударения (полные)
- Евро
Sacramento-Regular. ttf
Загрузить @font-face
- Ударения (частичные)
Intro Inline.otf
Загрузить @font-face
- Евро
OneDirection.ttf
Загрузить @font-face
- Ударения (частичные)
- Ударения (полные)
- Евро
Parisienne-Regular.ttf
Загрузить @font-face
- Ударения (частичные)
- Ударения (полные)
- Евро
OpenSans-Bold.ttf
Загрузить @font-face
- Ударения (частичные)
- Ударения (полные)
- Евро
OpenSans-Light.ttf
Загрузить @font-face
- Ударения (частичные)
- Ударения (полные)
- Евро
OpenSans-Regular.ttf
Загрузить @font-face
The Avengers.otf
- Евро
LONDO___. TTF
Загрузить @font-face
- Cмайлики
- Символы игральных карт
1 Minecraft-Regular.otf
Загрузить @font-face
- 1-10 — 129832 pезультаты
- следующая
(почти) идеальные засечки, кернинги и иероглифы / Хабр
Продолжаем серию статей о шрифтах в играх. В первой части мы вспоминали об истории типографики, размышляли о влиянии шрифта на восприятие игры и начали погружаться в формат ttf-файла.
Во второй части мы расскажем, что делать, чтобы буквы не наезжали друг на друга, а все штрихи выглядели правильно. И бонусная сцена для тех, кто останется в зале после титров: хитрости работы со шрифтами для китайских и японских игроков.
FontTools
Светлое будущее наступило с PyPI-библиотекой fontTools, которая устанавливается через pip. Она работает на всех нужных нам платформах (в отличие от FontForge, где нам приходилось танцевать с бубном) и может открывать, создавать, писать таблицы в нужном формате.
from fontTools.ttLib import TTFont from fontTools.subset import Subsetter def erase_not_used(font_path, source_file, symbols): shutil.copyfile(source_file, font_path) subsetter = Subsetter() subsetter.populate(text=''.join(symbols)) font = TTFont(font_path) subsetter.subset(font) font.save(font_path) font.close() if subsetter.unicodes_missing: # Это символы сердечек, пик и подобных. Они встречаются у нас в тексте, но их нет в исходных шрифтах service_symbols = [(65024, 65039), (13, 13)] missed_symbols = [sym for sym in subsetter.unicodes_missing if not any(beg <= sym <= end for beg, end in service_symbols)] print(f'There are missing glyphs in source font: {missed_symbols}')
Subsetter умный и сам знает, что для составных глифов необходимо оставлять все его части. Более того, он оставляет данные о составном глифе только в виде информации о точках в таблице glyf
, а в других таблицах вырезает упоминание. Основной плюс подобного вырезания в том, что в шрифте остаются все исходные таблицы со всеми кернингами, инструкциями и хинтами. Слияние многих шрифтов в один такого плюса лишено. Нужно за всем следить самим.
class ParsedFont(object): def __init__(self, font_path): self.__file_path = font_path # Открытый текст - TTFont self.font = None # Интересующие нас таблицы self.hmtx = None self.vmtx = None self.glyph_set = None self.glyf = None self.cmap = None self.kern = None self.os2 = None # Таблица имён глифов, связь нового имени и имени в шрифте self.cmap_prepared = None # Связь имени глифа в шрифте и его unicode self.name_uni = None self._is_otf = False self.__prepare() def __prepare(self): self. font = TTFont(self.__file_path) # Пробел в конце не ошибка, таблица имеет тэг "CFF " self._is_otf = 'CFF ' in self.font # Для otf-шрифтов другие таблицы, мы их не сливаем в один if self._is_otf: return self.hmtx = self.font['hmtx'] self.vmtx = self.font['vmtx'] if 'vmtx' in self.font else None self.vhea = self.font['vhea'] if 'vhea' in self.font else None self.glyph_set = self.font.getGlyphSet() self.glyf = self.font['glyf'] self.cmap = self.font['cmap'] self.kern = self.font['kern'] if 'kern' in self.font else None self.os2 = self.font['OS/2'] self.cmap_prepared = {} self.name_uni = {} for table in self.cmap.tables: for sym, sym_nm in table.cmap.items(): sym_hex = hex(sym) hex_name = f'{sym_hex}'.replace('0x', '').upper() # Исправляем имена символов, так как почему-то в некоторых шрифтах решили сделать несовпадающими # ord(unicode) и glyph_name. Действительно, почему бы и нет # Но чтобы в текущем шрифте их найти нужно сохранить и первоначальное имя - будет хранится в synonims[0] true_name = f'u{hex_name}' syms_codes = self.cmap_prepared.setdefault(sym, {'name': true_name, 'synonims': []}) if sym_nm not in syms_codes: syms_codes['synonims'].append(sym_nm) self.name_uni[sym_nm] = sym @property def is_otf(self): return self._is_otf
Во время открытия шрифта подготавливаем таблицу cmap
. В обычном случае давать имена глифам можно любые — это хоть и нужная информация, но стандарт имена никак не регламентирует. Можно хоть букву И назвать в шрифте «кракозябра» — и всё будет работать, на правильное использование и отрисовку шрифта это никак не повлияет. Но для слияния очень важно понимать, какой именно мы обрабатываем глиф, так как таблица у нас сводная. В нашем коде имя заменяется на f’u{Hex}, именно оно будет в подготовленном файле. И также надо сохранить исходное имя, чтобы потом найти информацию о глифе в других таблицах открытого шрифта.
Сбор информации о символе: копирование информации о точках:
from fontTools.pens.ttGlyphPen import TTGlyphPen def add_symbol(sym_ord: int, glyphs_info: Dict, font: ParsedFont): glyph_link = font.cmap_prepared.get(sym_ord) if glyph_link is None: return None glyph_name_font = glyph_link['synonims'][0] glyph = font.glyph_set.get(glyph_name_font) pen = TTGlyphPen(font.glyf) glyph.draw(pen) gl = pen.glyph()
Для копирования точек и кривых в fonttools есть класс TTGlyphPen
: он возьмёт все контуры из глифа и скопирует информацию о компонентах. Но если не добавить в новый шрифт сами компоненты, мы получим в итоге пустой либо недостоверный символ (то же самое поведение, что при удалении лишних символов).
Сбор информации о символе: разбираемся с компонентами
if gl.isComposite(): add_error = True compound_names = {} # component names for gl_component in gl. components: comp_sym_ord = font.name_uni.get(gl_component.glyphName) if comp_sym_ord is None: break sym_name = add_symbol(comp_sym_ord, glyphs_info, font) if sym_name is None: break compound_names[gl_component.glyphName] = sym_name else: add_error = False # В новом шрифте возможно будет другое имя, заменяем его на него for gl_component in gl.components: gl_component.glyphName = compound_names[gl_component.glyphName] if add_error: fallback_composite_add(gl, font.glyf)
Мы рекурсивно вызываем add_symbol
, чтобы не пропустить глифы, которые включают в себя глифы, которые включают в себя глифы, которые… Ну вы поняли 🙂 Также обязательно заменяем имя глифа в информации о компоненте, так как в шрифт у нас попадает глиф с нормализованным именем.
Ещё один трюк — fallback_composite_add
. Помните, как Subsetter красиво вырезал глифы, не записывая информацию в cmap и другие таблицы? Это как раз обработка такого случая.
from fontTools.ttLib.tables import ttProgram def fallback_composite_add(gl, glyf): coords, end_pts, flags = gl.getCoordinates(glyf) gl.coordinates = coords gl.endPtsOfContours = end_pts gl.flags = flags del gl.components gl.numberOfContours = len(end_pts)
Метод gl.getCoordinates собирает все точки и контуры, которые используются в глифах-компонентах, и возвращает полный вариант. Другими словами, мы заменяем ссылку на глиф самим глифом.
Следующая часть, которая нас интересует, — инструкции. Эта та штука, которая позволяет попасть глифу в пиксельную сетку красиво. Без них получится что-то такое (погружение в тему).
if hasattr(glyph._glyph, 'program'): gl.program = deepcopy(glyph._glyph.program) else: gl.program = ttProgram.Program() gl.program.fromBytecode([])
Если вы играли в старые версии Fishdom, то, возможно, замечали, что буквы i, j, t, f частенько друг на друга накладывались.
А это всё потому, что нет времени объяснять, давай релизить! не копировалась информация о кернингах. В этой таблице для некоторых символов сохраняются отступы к другим символам-соседям. Внутреннее устройство таблицы может быть в нескольких форматах, мы поддерживаем только упорядоченные кернинг-пары.
def get_symbol_kerns(glyph_name, kern, name_uni): if kern is None: return None kerns = [] for kern_table in kern.kernTables: # Поддерживаем только формат 0: упорядоченные пары if kern_table.format != 0: continue pairs = [] for kern_pair in kern_table.kernTable: if kern_pair[0] == glyph_name: pairs.append((name_uni.get(kern_pair[1]), kern_table[kern_pair])) if pairs: kerns.append({'coverage': kern_table.coverage, 'pairs': pairs}) return kerns
Осталось только всё это записать в нашу сводную таблицу glyphs_info
. Дополнительно указав метрики горизонтальных интервалов (hmtx).
new_name = glyph_link['name'] glyphs_info[sym_ord] = { 'name': glyph_link['name'], 'hmtx': font. hmtx[glyph_name_font], 'kern': get_symbol_kerns(glyph_name_font, font.kern, font.name_uni), 'glyph': gl }
Теперь настала очередь готовить наш шрифт! Сначала собираем информацию в glyphs_info
.
def merge_fonts(font_path: str, source_files: List[str], symbols, metrics_source, font_name): glyphs_info = {} found_symbols = [] for source_path in source_files: font_add = ParsedFont(source_path) if font_add.is_otf: print(f'[ERROR] Merge of otf fonts does not supported.') return for symbol in symbols: sym_ord = ord(symbol) if add_symbol(sym_ord, glyphs_info, font_add): found_symbols.append(symbol)
После сбора необходимо обратно развернуть в таблицы всё собранное уже для конечного файла шрифта.
glyphs = [] character_map = {} h_metrics = {} glyphs_setup = {} kerns = {} ord_name_links = {} for sym_id, gl_info in glyphs_info.items(): gl_name = gl_info['name'] ord_name_links[gl_name] = sym_id # Таблицы cmap, glyf и htmx character_map[sym_id] = gl_name h_metrics[gl_name] = gl_info['hmtx'] glyphs. append(gl_name) glyphs_setup[gl_name] = gl_info['glyph'] # Генерирования информация для kern-таблицы, которая отдельно записывается kern_info = gl_info['kern'] if kern_info is not None: for kern_coverage in kern_info: coverage = kern_coverage['coverage'] kern_table = kerns.setdefault(coverage, {}) for pair in kern_coverage['pairs']: # возможно, что символ для кернинга не нужен в результирующем шрифте if pair[0] not in glyphs_info: continue pair_gl_name = glyphs_info[pair[0]]['name'] kern_table.update({(gl_name, pair_gl_name): pair[1]})
Так как мы сливаем не все глифы, то при сохранении кернингов ещё проверим, что глиф из связки в принципе попадает в итоговый шрифт. Если нет — не сохраняем эту кернинг-пару.
fb = FontBuilder(unitsPerEm=1024, isTTF=True) fb.setupGlyphOrder(glyphs) fb.setupCharacterMap(character_map) fb.setupGlyf(glyphs_setup) fb. setupHorizontalMetrics(h_metrics) metrics_font = ParsedFont(metrics_source) if metrics_source is not None else None metrics = get_metrics(metrics_font) fb.setupHorizontalHeader(**metrics.hhea) font_name = font_name.replace(' ', '') setup_name_table(metrics_font=metrics_font, font_builder=fb, font_name=font_name) fb.setupOS2(**metrics.os2) setup_kern_table(fb.font, kerns) setup_hints(metrics_font=metrics_font, font=fb.font, logger=logger, font_name=font_name) fb.setupPost() fb.save(font_path)
Часть работы за нас делает FontBuilder из пакета fonttools, принимая питоновские dict. Но некоторые вещи нужно учитывать в своём коде.
Кернинги. Нужно перенести наши записи в таблицу. В нашем случае было логичным писать в том же формате, в котором мы читаем, не углубляясь в дебри документации.
from fontTools.ttLib.tables._k_e_r_n import KernTable_format_0 def setup_kern_table(font, kerns): ttf_kern_table = newTable('kern') ttf_kern_table.version = 0 ttf_kern_table. kernTables = [] for coverage, kern_table in kerns.items(): ttf_kern_value = KernTable_format_0(apple=False) ttf_kern_value.coverage = coverage ttf_kern_value.format = 0 ttf_kern_value.kernTable = kern_table ttf_kern_value.tupleIndex = None ttf_kern_value.version = 0 ttf_kern_table.kernTables.append(ttf_kern_value) font['kern'] = ttf_kern_table
Таблицы для хинтов. Это набор из таблиц fpgm
, prep
, cvt
, maxp
, которые определяют общие инструкции для всего шрифта. Нужно это для того, чтобы символы не слипались в комок при уменьшении (вот тут прям подробно). Помните первую картинку с приветственного экрана Gardenscapes?
Мы как раз теряли хинтинг. Возвращаем на место — setup_hints
. Для этого нам нужен шрифт, откуда брать инструкции — metrics_font
. Если его нет, тогда пропускаем шаг, так как автоматом генерировать такое — слишком даже для нас.
def setup_hints(metrics_font, font, font_name): if metrics_font is None: return fpgm = metrics_font.font['fpgm'] if 'fpgm' in metrics_font.font else None prep = metrics_font.font['prep'] if 'prep' in metrics_font.font else None cvt = metrics_font.font['cvt '] if 'cvt ' in metrics_font.font else None maxp_src_table = metrics_font.font['maxp'] if 'maxp' in metrics_font.font else None # Строгое условие, всё хорошо - нам просто не надо ничего копировать if fpgm is None and prep is None and cvt is None: return if fpgm is None or prep is None or cvt is None: print(f'[WARNING] Expected prep+cvt+fpgm tables in source font: fpgm="{fpgm is not None}"; ' f'cvt="{cvt is not None}"; prep="{prep is not None}"') return fpgm_table = newTable('fpgm') fpgm_table.program = fpgm.program font['fpgm'] = fpgm_table cvt_table = newTable('cvt ') cvt_table.values = cvt.values font['cvt '] = cvt_table prep_table = newTable('prep') prep_table. program = prep.program font['prep'] = prep_table maxp_table = font['maxp'] maxp_table.maxZones = maxp_src_table.maxZones maxp_table.maxStorage = maxp_src_table.maxStorage maxp_table.maxFunctionDefs = maxp_src_table.maxFunctionDefs maxp_table.maxTwilightPoints = maxp_src_table.maxTwilightPoints maxp_table.maxStackElements = maxp_src_table.maxStackElements maxp_table.maxInstructionDefs = maxp_src_table.maxInstructionDefs if maxp_table.maxFunctionDefs == 0: print(f'[WARNING] [{font_name}] There are instructions in font but functionDefs in "maxp" table == 0') if maxp_table.maxStackElements == 0: print(f'[WARNING] [{font_name}] There are instructions in font but maxStackElements in "maxp" table == 0')Заметки для Windows
Если шрифт используется на Windows, то для правильной работы обязательно нужна запись os/2, а имя шрифта в соответствующем поле должно быть без пробелов.
def setup_name_table(metrics_font, font_builder, font_name): style_name = "TauStyle" if metrics_font is not None and 'name' in metrics_font. font: # Берём имя стиля из таблицы шрифта для метрик, если он есть style_name_record = metrics_font.font['name'].getName(nameID=2, platformID=3, platEncID=1, langID=1033) \ or metrics_font.font['name'].getName(nameID=2, platformID=3, platEncID=1, langID=None) if style_name_record is not None: style_name = style_name_record.toUnicode() name_strings = dict(familyName=dict(en=font_name), styleName=dict(en=style_name), uniqueFontIdentifier=f'tau_empire:{font_name}', fullName=f'{font_name}', psName=f'{font_name}', version='Version 0.1') font_builder.setupNameTable(name_strings)
Высший пилотаж для китайских и японских игроков
Если в вашем приложении есть китайская и японская локализация, то высшим пилотажем будет подготовить для них отдельные шрифты.
Китайские и японские иероглифы сильно отличаются, хоть и имеют одно происхождение — японские символы изначально были заимствованы из китайского языка. С тех пор возникли заметные различия в написании, а с появлением компьютеров каждая нация разработала собственные шрифты, которые передают нюансы в начертании.
Слева направо: китайский упрощённый, китайский традиционный и японский.А если использовать один и тот же шрифт, то велика вероятность, что пользователи почувствуют то же, что чувствуем мы, когда видим такие вывески:
У нас в играх используется система приоритета символов в загружаемых шрифтах. Она работает с двух сторон.
Движок при загрузке может переопределять символы на лету и для японской локализации добавлять шрифт, собранный специально для японской локали.
<!-- Для всех локализаций --> <Locale> <Font name="HanSansNormal" /> </Locale> <!-- Для японской отдельно загрузим сверху шрифт. А уже встречающиеся символы перекроем --> <Locale lang="ja"> <Font name="HanSansNormal"> <SubFont name="HanSansNormal_diff_ja" extenstionMode="Override" /> </Font> </Locale>
Система сборки: имеет встроенный приоритет исходных шрифтов, который мы уже реализовали в функции merge_fonts
. Каждый следующий шрифт перезатирает символ, который был из предыдущего. То есть самый последний — самый главный. Этот порядок определяется в конфигах проекта.
<font> <SourceFonts type="common"> <source path="PoetsenOne.ttf" /> <source path="Ubuntu.ttf" /> <source path="FDCustomHSNormal.ttf" /> </SourceFonts> <SourceFonts> <source path="SourceHanSans-Normal.ttf" /> <source path="SourceHanSansSC-Normal.ttf" /> <source path="SourceHanSansK-Normal.ttf" /> </SourceFonts> <SourceFonts> <source path="SourceHanSansSC-Normal.ttf" /> <source path="SourceHanSansK-Normal.ttf" /> <source path="SourceHanSans-Normal.ttf" /> </SourceFonts> <Generate> <font path="font/HanSansNormal.ttf"> <symbols /> <source /> <source /> </font> <font path="font/HanSansNormal_diff_ja.ttf"> <symbols /> <source /> <source /> </font> </Generate> </font>
А так как шрифт для японского получается очень мелким (собираются же только символы для японских текстов), то мы получаем минимальный размер с одной стороны и гибкость настройки — с другой.
Заключение
Мы получили гибкую в настройке систему и забрали боль починки багов с проектов в общую команду технологий. Теперь страдаем копаемся в документации и внутренностях только мы, а коллеги могут делать игры быстрее и лучше, не заботясь о таких деталях.
Полный код двух статей можно посмотреть в нашем публичном репозитории. А пока — не отказывайте себе в удовольствии и пишите в комментариях, что ещё хотите узнать о работе со шрифтами.
61 Бесплатные шрифты для видеоигр » Fontsc
Размер: defaultsmalllargeNameSort By PopularRecentList 10 Fonts2550 Только без рекламы
Бесплатное ПО — личное и коммерческое использование 2 файла шрифта Скачать
Бесплатное ПО — для личного или некоммерческого использования 15 файлов шрифтов Скачать
Бесплатное ПО — личное и коммерческое использование 1 файл шрифта Скачать
Бесплатное ПО — личное и коммерческое использование 1 файл шрифта Скачать
Бесплатное ПО — личное и коммерческое использование 4 файла шрифтов Скачать
Бесплатное ПО — личное и коммерческое использование 2 файла шрифта Скачать
Бесплатное ПО — личное и коммерческое использование 8 файлов шрифтов Скачать
Бесплатное ПО — личное и коммерческое использование 1 файл шрифта Скачать
Бесплатное ПО — личное и коммерческое использование 8 файлов шрифтов Скачать
Бесплатное ПО — личное и коммерческое использование 15 файлов шрифтов Скачать
Просмотр категорий шрифтов
- Serif
- Без засечек
- Сценарий
- Декоративный
- Дингбаты
- пикселей, растровое изображение
- Черное письмо
- Международный
Теги случайного шрифта
- 16px
- разбитый
- медведь
- век готика
- дерево
- тамильский
- itc zapf канцелярия
- транспорт
- билинейный
- спорт
- документов
- геометрический
- заголовок
- ниндзя
- телевизор
- жираф
- 32px
- рисованной
- усы
- греческий вид
- линкор
- корпоративный
- музыка
- острый
- США
- камень
- океан
- названий
- автомобилей
- гротеск
Популярные теги шрифтов
- Рождество
- выходной
- партия
- день рождения
- новый год
- люкс
- неоновые огни
- гонки
- праздник
- арабский
Follow Fontsc
facebook.com/fontsc/»> FontscAbous Fontsc
Fontsc.com создан в духе шрифтов, где творческие идеи встречаются с прекрасным дизайном, поскольку мы все знаем, что великолепный дизайн остается навсегда!
Здесь вы можете искать, просматривать и загружать тысячи БЕСПЛАТНЫХ шрифтов коммерческого качества от лучших дизайнеров шрифтов.
- Конфиденциальность
- Условия
- Часто задаваемые вопросы
- Контакт
Copyright © 2018 Fontsc.com
40 лучших игровых шрифтов для всех ваших дизайнов, связанных с играми (2023)
Как мы все знаем, геймеры обладают уникальным чувством художественного стиля. Если вы хотите использовать эту игровую эстетику и воссоздать ее в своих творческих проектах, вам понадобится правильный шрифт для работы.
Имея это в виду, мы составили окончательный список лучших игровых шрифтов, доступных в 2021 году. Приведенные ниже гарнитуры идеально подходят для любого дизайна, связанного с игрой.
Являетесь ли вы разработчиком видеоигр, ищущим классный шрифт для своего последнего проекта, маркетологом, работающим над игровым брендингом/рекламными материалами, или стримером Twitch/игроком YouTube, ищущим приятный шрифт для использования в обложке своего канала. , вы обязательно найдете в этом списке шрифт, который вам нравится.
Топ-40 лучших игровых шрифтов
Итак, приступим! Вот наши 40 лучших игровых шрифтов на рынке. Если вы видите что-то, что вам нравится, просто нажмите на название шрифта, чтобы перейти на страницу загрузки.
1. Шрифт для видеоигрДавайте начнем со взрыва в прошлое с вдохновленным ретро, метко названным «шрифтом для видеоигр». Это дизайн, который отдает дань уважения классическим аркадным играм, таким как всеми любимый марсианский шутер 80-х, космический захватчик. Это супер ностальгия.
Он имеет пиксельный дизайн, а загружаемый файл содержит как основной набор персонажей, так и 17 бонусных пиксельных марсиан, так что вы можете добавить в свои дизайны классную 8-битную графику.
Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16.50/месяц)
2. Tsuki TypefaceTsuki — один из моих любимых шрифтов без засечек. Этот красивый шрифт полон характера. Он вдохновлен японскими мангами и будет отлично смотреться в JRPG и инди-играх.
Цена: Использование в личных и коммерческих целях включено в подписку Envato Elements (16,50 долларов США в месяц)
3. Шрифт Game OverGame Over — это кисть ручной работы и шрифт SVG. Такой рисунок мазка отлично смотрелся бы в играх ужасов, гранже и других художественных проектах. Как следует из названия, он также будет хорошо работать в качестве внутриигрового текста «игра окончена».
Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц). Это блочный шрифт, который выпрыгивает за пределы страницы, поэтому он будет хорошо работать в заголовках, постерах, значках YouTube, логотипах приложений Android/iOS и многом другом. Набор включает в себя основные символы A-Z в верхнем и нижнем регистре, цифры и знаки препинания. Он полностью совместим с Adobe Illustrator и Photoshop.
Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц)
5. Caveman Gaming Font палеолитический период. Он идеально подходит для игр на выживание и любых игр, действие которых происходит в античной/юрской эпохе. Это сильный, привлекающий внимание шрифт, который выглядит так, будто его вырезали прямо из каменной плиты.Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц)
6. Starzone Scifi Gaming FontЕсли вы ищете футуристический шрифт для научной фантастики, обратите внимание на Starzone. Это профессионально разработанный роботизированный шрифт, который будет отлично смотреться на научно-фантастических плакатах, брендинге видеоигр, упаковке продуктов и многом другом.
Цена: Использование в личных и коммерческих целях включено в подписку Envato Elements (16,50 долларов США в месяц)
7. Гоночный игровой шрифт MonocoqueMonocoque — это «скоростной шрифт» с блочной формой и острыми углами. Он идеально передает суть скорости, с персонажами, которые наклоняются вперед, словно мчась за пределы страницы. Это делает его идеально подходящим для автомобильных и гоночных игр.
Цена: Личное и коммерческое использование, включенное в подписку Envato Elements ($16,50/месяц)
8. Конфеты из гуавыМобильные игры на конфетную тематику в наши дни очень популярны. Если вы работаете над дизайн-проектом для чего-то подобного, детский игровой шрифт Guava Candy может быть именно тем шрифтом, который вам нужен. Это веселый, игривый шрифт, вдохновленный кондитерскими изделиями, с дизайном, который сразу бросается в глаза. Привлекающая внимание эстетика делает его идеальным для мобильных игр и онлайн-мини-игр.
Цена: Использование в личных и коммерческих целях включено в подписку Envato Elements (16,50 долларов США в месяц)
9. River AdventurerRiver Adventurer — идеальный шрифт для приключенческих игр. Это блочный игровой шрифт без засечек, написанный заглавными буквами, который напоминает джунгли и изображения дикой природы. Это действительно вызывает чувство приключения и идеально подходит для привлекательных дизайнов, где вы хотите, чтобы текст действительно выделялся, например, логотипы магазинов приложений, плакаты и миниатюры Youtube.
Цена: Использование в личных и коммерческих целях включено в подписку Envato Elements (16,50 долларов США в месяц)
10. Шрифт HermesHermes — шрифт в стиле куберпанк, разработанный LogoLabs. Каким-то образом ему удается быть одновременно и ретро, и футуристическим. Высокотехнологичный футуристический дизайн сочетается с эстетикой 80-х, создавая нечто поистине волшебное. Это напоминает такие игры, как Cyberpunk 2077, и такие фильмы, как «Бегущий по лезвию».
Цена: Бесплатно для личного использования через Befonts. Коммерческие лицензии доступны через Creative Market от $9..
11. DankosaurusDankosaurus — детский игровой шрифт, вдохновленный динозаврами. Это оптимистичный, причудливый шрифт, который отлично подходит для детских игр, действие которых происходит в доисторическую или юрскую эпоху. Шрифт представлен в двух стилях: обычном и округленном, и включает в себя наборы символов как верхнего, так и нижнего регистра.
Цена: Личное и коммерческое использование, включенное в подписку Envato Elements (16,50 долларов в месяц)
12. Royal KingdomRoyal Kingdom — еще один игривый шрифт, который отлично подходит для детских игр. Мультяшный дизайн отлично подходит для игровых проектов пользовательского интерфейса, а также для баннеров, плакатов, листовок, игровых товаров и любых других забавных креативных дизайнов. Он поставляется в 3 различных форматах: OTF, TTF и WOFF и включает символы верхнего и нижнего регистра, цифры и знаки препинания.
Цена: Личное и коммерческое использование, включенное в подписку Envato Elements (16,50 долларов США в месяц)
13. Jamer Retro Game FontJamer — это пиксельный ретро-шрифт в современной интерпретации. Дизайнер использовал инновационный 3D-эффект для создания уникального, единственного в своем роде дизайна, который идеально подходит для проектов, в которых вы собираетесь играть в ретро-стиле. Все символы написаны заглавными буквами и доступны только в формате файла OTF.
Цена: Личное и коммерческое использование, включенное в подписку на Envato Elements (16,50 долларов в месяц)
14. Grind DemolishedGrind — крупный, жирный, мощный шрифт. Текстурированный дизайн персонажа придает ему «разрушенный» вид, который источает прочность и мужественность. Он идеально подходит для игр, ориентированных на взрослую аудиторию или мужской рынок. Это также будет хорошо работать на многих различных типах дисплеев.
Цена: Личное и коммерческое использование включено в подписку на Envato Elements ($16,50/месяц). Это напоминает такие игры, как PUBG, и отлично подойдет для логотипов киберспорта. Пакет загрузки включает прописные и строчные буквы, цифры, символы, знаки препинания, а также стилистические варианты и лигатуры.
Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц). Это моноширинный шрифт, что означает, что все символы имеют фиксированную ширину и занимают одинаковое пространство по горизонтали.
Цена: Использование в личных и коммерческих целях включено в подписку Envato Elements (16,50 долларов США в месяц)
17. Игровой шрифт VictoriusВикториус — еще один забавный старинный игровой шрифт, который отлично подходит для детских мобильных игр и мини-игр. Он имеет гладиаторский дизайн и явно вдохновлен древнегреческими текстами. Это будет хорошо работать в любых игровых проектах, посвященных гладиаторам, мифическим существам или древнему миру.
Цена: Использование в личных и коммерческих целях включено в подписку Envato Elements (16,50 долларов США в месяц)
18. Speed BeastSpeed Beast — еще один дисплейный шрифт на гоночную тематику, разработанный профессиональным дизайнером шрифтов Vunira. Это динамичный шрифт, вызывающий ощущение скорости, который хорошо подойдет для любого автомобильного или спортивного игрового проекта.
Цена: Демо-версия бесплатна для личного использования. Пожизненные лицензии на полную версию (включая как личное, так и коммерческое использование) начинаются от 10 долларов США
19. CageWorldCageWorld — это винтажный шрифт ручной работы. Он выполнен в том же стиле, что и культовый экшн-игра «беги и стреляй» Cuphead, вдохновленный мультфильмами 1930-х годов.
Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц) и дизайны, связанные с играми. Это шрифт, который оказывает огромное влияние, с очень толстыми и тяжелыми буквами и без каких-либо изгибов.
Цена: Личное и коммерческое использование включено в подписку на Envato Elements ($16,50/месяц). Он отлично подходит для логотипов команд, футболок и товаров. Он доступен в форматах OTF и TTF.
Цена: Личное и коммерческое использование, включенное в подписку Envato Elements (16,50 долларов в месяц)
22. Fun BlobFun blob — это причудливый, веселый, жизнерадостный шрифт, который не воспринимает себя слишком серьезно. Закругленные углы и небрежные неровные надписи придают ему комичный вид. Это отличный универсальный дисплейный шрифт, который идеально подходит для детских игр, постеров, журналов, обложек YouTube и многого другого.
Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц)
23. RackisДалее у нас есть Rackis. Этот универсальный дисплейный шрифт подходит для логотипов киберспортивных команд, названий игр, постеров, логотипов, эскизов, товаров и всех других игровых дизайнов. Он поставляется в 4 различных форматах шрифта: обычный, полужирный, курсив и полужирный курсив.
Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц). Он отлично подходит для любого графического дизайна, включая визитные карточки, фотографии, плакаты и логотипы, но особенно хорошо подходит для игрового дизайна. Шрифт поставляется как с заглавными буквами, так и с цифрами от 0 до 9.
Цена: Использование в личных и коммерческих целях включено в подписку Envato Elements (16,50 долларов США в месяц)
25. Шрифт Pixel ColecoPixel Coleco — это растровый шрифт, основанный на классической игровой консоли Colecovision начала 80-х годов. Этот стиль шрифта был повсеместным в классических играх начала 80-х, поэтому он обязательно вызовет чувство ностальгии.
Цена: Бесплатно (бесплатная лицензия)
26. RockganRockgan — шрифт для космических игр с игривым дизайном. Он особенно хорошо подходит для мобильных игр на космическую тематику и поставляется в формате файла OTF.
Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц)
27. GameriaДавайте перейдем к семейству шрифтов Gameria. Этот шрифт имеет причудливые символы блочной формы с острыми углами. Это еще один отличный дисплейный шрифт, который выделяется на экране и хорошо подходит для названий игр, постеров и многого другого. Он поставляется в форматах файлов OTF, TTF и WOFF и включает как прописные, так и строчные буквы, а также основные знаки препинания и цифры от 0 до 9..
Цена: Личное и коммерческое использование включено в подписку на Envato Elements ($16,50/месяц). Дизайнер использовал сочетание квадратных и зазубренных углов, чтобы создать забавный дизайн, который отлично подходит для геймеров.
Цена: Личное и коммерческое использование, включенное в подписку Envato Elements (16,50 долларов в месяц)
29. ArcadiaArcadia — еще один современный научно-фантастический игровой шрифт со спортивным дизайном. Он отлично подходит для киберспортивных логотипов, а также дизайна в стиле ретро, гоночных игр, научно-фантастических игр, обложек книг и многого другого.
Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц)
30. Шрифт Scrubland Adventure Gaming Scrubland может быть именно тем шрифтом, который вы ищете. Это мультяшный шрифт, вдохновленный комиксами и классическими приключенческими играми.Цена: Личное и коммерческое использование включено в подписку Envato Elements (16,50 долларов в месяц)
31. Atari ClassicКогда люди думают о ностальгии по видеоиграм, они думают об Atari. Atari были пионерами в области игровых консолей и аркадных игр, выпустив свою первую консоль еще в 70-х годах, которая до сих пор остается культовой классикой. Если вы хотите прикоснуться к культовой игровой эстетике Atari, обратите внимание на этот потрясающий ретро-шрифт, основанный на оригинальном 8-битном наборе символов Atari.
Цена: Бесплатно (бесплатная лицензия)
32. Игровой шрифт Attack of Monster HorrorAttack of Monster — игровой шрифт на тему Хэллоуина, который отлично подходит для страшных игровых дизайнов. Общий вид шрифта скорее «жуткий», чем «пробирающий до костей», поэтому он больше подходит для жутких детских игр, чем для настоящих игр ужасов, ориентированных на взрослый рынок.
Цена: Использование в личных и коммерческих целях включено в подписку Envato Elements (16,50 долларов США в месяц)
33. Звук бомбыThe Bomb Squad — мощный и игривый блочный шрифт с острыми углами и четкими линиями. Это сильное шрифтовое начертание, обладающее мощным эффектом, поэтому его можно использовать в качестве шрифта для отображения на постерах, обложках, миниатюрах игр и обложках каналов YouTube.
Семейство шрифтов включает стандартные прописные и строчные буквы латинского алфавита, цифры и знаки пунктуации, как обычные, так и курсивные. Он поставляется в форматах файлов OTF, TTF и WOFF.
Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц)
34. Pixel RandДалее у нас есть Pixel Rand. Это шрифт OTF, созданный с пикселями среднего размера и случайным расположением. Его растровый стиль идеально подходит для пиксельных видеоигр и старых дизайнов в стиле ретро.
Цена: Личное и коммерческое использование, включенное в подписку Envato Elements (16,50 долларов США в месяц)
35. Overfield Futuristic Gaming FontOverfield — это футуристический техно-шрифт, вдохновленный классическими научно-фантастическими фильмами и играми. Он имеет роботизированный техно-дизайн, что делает его отличным выбором для игр в жанре научной фантастики.
Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц)
36. MonstarizeMonstarize — еще один жуткий экранный шрифт, который отлично подходит для игр ужасов. Буквы выглядят так, будто они стекают со страницы, как слизь. Его можно скачать в форматах OTF, TTF и WOFF. Пакет также содержит буквы AZ и AZ, знаки препинания и цифры.
Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц)
37. Arcade MachineArcade Machine — еще один из моих любимых игровых шрифтов в этом списке. Дизайнер хотел отдать дань уважения всем вещам, которые он любил в детстве в 80-х, и черпал вдохновение в ретро-аркадных играх, synthwave и Miami Vice. Это суперностальгия, а ретро-дизайн уникален.
Цена: Личное и коммерческое использование, включенное в подписку Envato Elements (16,50 долларов США в месяц)
38. NostrumNostrum — еще один игровой шрифт, который, как я вижу, хорошо работает для логотипов и товаров киберспортивной команды. Он поставляется в 3 разных стилях шрифта: обычный, курсив и грубый.
Цена: Личное и коммерческое использование, включенное в подписку на Envato Elements (16,50 долларов в месяц)
39. JumpmanJumpman — это простой декоративный игровой шрифт с дурацким дизайном. Персонажи наклоняются туда-сюда, словно спрыгивая со страницы, что придает шрифту комичный вид, идеально подходящий для веселых мобильных игр. Дизайнер черпал вдохновение из оригинальной игры Nintendo Donkey Kong.
Цена: Jumpman бесплатен для личного использования, но для коммерческого использования требуется пожертвование. Если вы хотите использовать его в коммерческих проектах, вам нужно связаться с дизайнером.
40. VarinoИ последнее, но не менее важное: у нас есть Varino — еще один футуристический научно-фантастический игровой шрифт. Минималистская эстетика и уникальные символы выделяют его среди других научно-фантастических шрифтов. Он поставляется в 5 различных стилях: жирный, нормальный, светлый, выдавливание и контур.
Цена: Личное и коммерческое использование включено в подписку Envato Elements (16,50 долларов в месяц)
Заключительные мысли
Вот и все — 40 лучших игровых шрифтов 2023 года, которые вдохновят вас на следующий творческий проект.