Поиск

  • 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

Загрузить @font-face

  • Евро

LONDO___. TTF

Загрузить @font-face

  • Cмайлики
  • Символы игральных карт

1 Minecraft-Regular.otf

Загрузить @font-face

  • 1-10 — 129832 pезультаты
  • следующая

(почти) идеальные засечки, кернинги и иероглифы / Хабр

Продолжаем серию статей о шрифтах в играх. В первой части мы вспоминали об истории типографики, размышляли о влиянии шрифта на восприятие игры и начали погружаться в формат ttf-файла. 

Во второй части мы расскажем, что делать, чтобы буквы не наезжали друг на друга, а все штрихи выглядели правильно. И бонусная сцена для тех, кто останется в зале после титров: хитрости работы со шрифтами для китайских и японских игроков.

FontTools

Светлое будущее наступило с PyPI-библиотекой fontTools, которая устанавливается через pip. Она работает на всех нужных нам платформах (в отличие от FontForge, где нам приходилось танцевать с бубном) и может открывать, создавать, писать таблицы в нужном формате.

Но выбирать нужные таблицы, прописывать все значения, правильно копировать глиф — это уже сами. Проделываем те же фокусы, что и с 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/»> Fontsc

Abous Fontsc

Fontsc.com создан в духе шрифтов, где творческие идеи встречаются с прекрасным дизайном, поскольку мы все знаем, что великолепный дизайн остается навсегда!

Здесь вы можете искать, просматривать и загружать тысячи БЕСПЛАТНЫХ шрифтов коммерческого качества от лучших дизайнеров шрифтов.

  • Конфиденциальность
  • Условия
  • Часто задаваемые вопросы
  • Контакт

Copyright © 2018 Fontsc.com

40 лучших игровых шрифтов для всех ваших дизайнов, связанных с играми (2023)

Как мы все знаем, геймеры обладают уникальным чувством художественного стиля. Если вы хотите использовать эту игровую эстетику и воссоздать ее в своих творческих проектах, вам понадобится правильный шрифт для работы.

Имея это в виду, мы составили окончательный список лучших игровых шрифтов, доступных в 2021 году. Приведенные ниже гарнитуры идеально подходят для любого дизайна, связанного с игрой.

Являетесь ли вы разработчиком видеоигр, ищущим классный шрифт для своего последнего проекта, маркетологом, работающим над игровым брендингом/рекламными материалами, или стримером Twitch/игроком YouTube, ищущим приятный шрифт для использования в обложке своего канала. , вы обязательно найдете в этом списке шрифт, который вам нравится.

Топ-40 лучших игровых шрифтов

Итак, приступим! Вот наши 40 лучших игровых шрифтов на рынке. Если вы видите что-то, что вам нравится, просто нажмите на название шрифта, чтобы перейти на страницу загрузки.

1. Шрифт для видеоигр

Давайте начнем со взрыва в прошлое с вдохновленным ретро, ​​метко названным «шрифтом для видеоигр». Это дизайн, который отдает дань уважения классическим аркадным играм, таким как всеми любимый марсианский шутер 80-х, космический захватчик. Это супер ностальгия.

Он имеет пиксельный дизайн, а загружаемый файл содержит как основной набор персонажей, так и 17 бонусных пиксельных марсиан, так что вы можете добавить в свои дизайны классную 8-битную графику.

Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16.50/месяц)

2. Tsuki Typeface

Tsuki — один из моих любимых шрифтов без засечек. Этот красивый шрифт полон характера. Он вдохновлен японскими мангами и будет отлично смотреться в JRPG и инди-играх.

Цена: Использование в личных и коммерческих целях включено в подписку Envato Elements (16,50 долларов США в месяц)

3. Шрифт Game Over

Game 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. Гоночный игровой шрифт Monocoque

Monocoque — это «скоростной шрифт» с блочной формой и острыми углами. Он идеально передает суть скорости, с персонажами, которые наклоняются вперед, словно мчась за пределы страницы. Это делает его идеально подходящим для автомобильных и гоночных игр.

Цена: Личное и коммерческое использование, включенное в подписку Envato Elements ($16,50/месяц)

8. Конфеты из гуавы

Мобильные игры на конфетную тематику в наши дни очень популярны. Если вы работаете над дизайн-проектом для чего-то подобного, детский игровой шрифт Guava Candy может быть именно тем шрифтом, который вам нужен. Это веселый, игривый шрифт, вдохновленный кондитерскими изделиями, с дизайном, который сразу бросается в глаза. Привлекающая внимание эстетика делает его идеальным для мобильных игр и онлайн-мини-игр.

Цена: Использование в личных и коммерческих целях включено в подписку Envato Elements (16,50 долларов США в месяц)

9. River Adventurer

River Adventurer — идеальный шрифт для приключенческих игр. Это блочный игровой шрифт без засечек, написанный заглавными буквами, который напоминает джунгли и изображения дикой природы. Это действительно вызывает чувство приключения и идеально подходит для привлекательных дизайнов, где вы хотите, чтобы текст действительно выделялся, например, логотипы магазинов приложений, плакаты и миниатюры Youtube.

Цена: Использование в личных и коммерческих целях включено в подписку Envato Elements (16,50 долларов США в месяц)

10. Шрифт Hermes

Hermes — шрифт в стиле куберпанк, разработанный LogoLabs. Каким-то образом ему удается быть одновременно и ретро, ​​и футуристическим. Высокотехнологичный футуристический дизайн сочетается с эстетикой 80-х, создавая нечто поистине волшебное. Это напоминает такие игры, как Cyberpunk 2077, и такие фильмы, как «Бегущий по лезвию».

Цена: Бесплатно для личного использования через Befonts. Коммерческие лицензии доступны через Creative Market от $9..

11. Dankosaurus

Dankosaurus — детский игровой шрифт, вдохновленный динозаврами. Это оптимистичный, причудливый шрифт, который отлично подходит для детских игр, действие которых происходит в доисторическую или юрскую эпоху. Шрифт представлен в двух стилях: обычном и округленном, и включает в себя наборы символов как верхнего, так и нижнего регистра.

Цена: Личное и коммерческое использование, включенное в подписку Envato Elements (16,50 долларов в месяц)

12. Royal Kingdom

Royal Kingdom — еще один игривый шрифт, который отлично подходит для детских игр. Мультяшный дизайн отлично подходит для игровых проектов пользовательского интерфейса, а также для баннеров, плакатов, листовок, игровых товаров и любых других забавных креативных дизайнов. Он поставляется в 3 различных форматах: OTF, TTF и WOFF и включает символы верхнего и нижнего регистра, цифры и знаки препинания.

Цена: Личное и коммерческое использование, включенное в подписку Envato Elements (16,50 долларов США в месяц)

13. Jamer Retro Game Font

Jamer — это пиксельный ретро-шрифт в современной интерпретации. Дизайнер использовал инновационный 3D-эффект для создания уникального, единственного в своем роде дизайна, который идеально подходит для проектов, в которых вы собираетесь играть в ретро-стиле. Все символы написаны заглавными буквами и доступны только в формате файла OTF.

Цена: Личное и коммерческое использование, включенное в подписку на Envato Elements (16,50 долларов в месяц)

14. Grind Demolished

Grind — крупный, жирный, мощный шрифт. Текстурированный дизайн персонажа придает ему «разрушенный» вид, который источает прочность и мужественность. Он идеально подходит для игр, ориентированных на взрослую аудиторию или мужской рынок. Это также будет хорошо работать на многих различных типах дисплеев.

Цена: Личное и коммерческое использование включено в подписку на Envato Elements ($16,50/месяц). Это напоминает такие игры, как PUBG, и отлично подойдет для логотипов киберспорта. Пакет загрузки включает прописные и строчные буквы, цифры, символы, знаки препинания, а также стилистические варианты и лигатуры.

Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц). Это моноширинный шрифт, что означает, что все символы имеют фиксированную ширину и занимают одинаковое пространство по горизонтали.

Цена: Использование в личных и коммерческих целях включено в подписку Envato Elements (16,50 долларов США в месяц)

17. Игровой шрифт Victorius

Викториус — еще один забавный старинный игровой шрифт, который отлично подходит для детских мобильных игр и мини-игр. Он имеет гладиаторский дизайн и явно вдохновлен древнегреческими текстами. Это будет хорошо работать в любых игровых проектах, посвященных гладиаторам, мифическим существам или древнему миру.

Цена: Использование в личных и коммерческих целях включено в подписку Envato Elements (16,50 долларов США в месяц)

18. Speed ​​Beast

Speed ​​Beast — еще один дисплейный шрифт на гоночную тематику, разработанный профессиональным дизайнером шрифтов Vunira. Это динамичный шрифт, вызывающий ощущение скорости, который хорошо подойдет для любого автомобильного или спортивного игрового проекта.

Цена: Демо-версия бесплатна для личного использования. Пожизненные лицензии на полную версию (включая как личное, так и коммерческое использование) начинаются от 10 долларов США

19. CageWorld

CageWorld — это винтажный шрифт ручной работы. Он выполнен в том же стиле, что и культовый экшн-игра «беги и стреляй» Cuphead, вдохновленный мультфильмами 1930-х годов.

Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц) и дизайны, связанные с играми. Это шрифт, который оказывает огромное влияние, с очень толстыми и тяжелыми буквами и без каких-либо изгибов.

Цена: Личное и коммерческое использование включено в подписку на Envato Elements ($16,50/месяц). Он отлично подходит для логотипов команд, футболок и товаров. Он доступен в форматах OTF и TTF.

Цена: Личное и коммерческое использование, включенное в подписку Envato Elements (16,50 долларов в месяц)

22. Fun Blob

Fun blob — это причудливый, веселый, жизнерадостный шрифт, который не воспринимает себя слишком серьезно. Закругленные углы и небрежные неровные надписи придают ему комичный вид. Это отличный универсальный дисплейный шрифт, который идеально подходит для детских игр, постеров, журналов, обложек YouTube и многого другого.

Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц)

23. Rackis

Далее у нас есть Rackis. Этот универсальный дисплейный шрифт подходит для логотипов киберспортивных команд, названий игр, постеров, логотипов, эскизов, товаров и всех других игровых дизайнов. Он поставляется в 4 различных форматах шрифта: обычный, полужирный, курсив и полужирный курсив.

Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц). Он отлично подходит для любого графического дизайна, включая визитные карточки, фотографии, плакаты и логотипы, но особенно хорошо подходит для игрового дизайна. Шрифт поставляется как с заглавными буквами, так и с цифрами от 0 до 9.

Цена: Использование в личных и коммерческих целях включено в подписку Envato Elements (16,50 долларов США в месяц)

25. Шрифт Pixel Coleco

Pixel Coleco — это растровый шрифт, основанный на классической игровой консоли Colecovision начала 80-х годов. Этот стиль шрифта был повсеместным в классических играх начала 80-х, поэтому он обязательно вызовет чувство ностальгии.

Цена: Бесплатно (бесплатная лицензия)

26. Rockgan

Rockgan — шрифт для космических игр с игривым дизайном. Он особенно хорошо подходит для мобильных игр на космическую тематику и поставляется в формате файла OTF.

Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц)

27. Gameria

Давайте перейдем к семейству шрифтов Gameria. Этот шрифт имеет причудливые символы блочной формы с острыми углами. Это еще один отличный дисплейный шрифт, который выделяется на экране и хорошо подходит для названий игр, постеров и многого другого. Он поставляется в форматах файлов OTF, TTF и WOFF и включает как прописные, так и строчные буквы, а также основные знаки препинания и цифры от 0 до 9..

Цена: Личное и коммерческое использование включено в подписку на Envato Elements ($16,50/месяц). Дизайнер использовал сочетание квадратных и зазубренных углов, чтобы создать забавный дизайн, который отлично подходит для геймеров.

Цена: Личное и коммерческое использование, включенное в подписку Envato Elements (16,50 долларов в месяц)

29. Arcadia

Arcadia — еще один современный научно-фантастический игровой шрифт со спортивным дизайном. Он отлично подходит для киберспортивных логотипов, а также дизайна в стиле ретро, ​​гоночных игр, научно-фантастических игр, обложек книг и многого другого.

Цена: Личное и коммерческое использование включено в подписку 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 Horror

Attack 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 Font

Overfield — это футуристический техно-шрифт, вдохновленный классическими научно-фантастическими фильмами и играми. Он имеет роботизированный техно-дизайн, что делает его отличным выбором для игр в жанре научной фантастики.

Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц)

36. Monstarize

Monstarize — еще один жуткий экранный шрифт, который отлично подходит для игр ужасов. Буквы выглядят так, будто они стекают со страницы, как слизь. Его можно скачать в форматах OTF, TTF и WOFF. Пакет также содержит буквы AZ и AZ, знаки препинания и цифры.

Цена: Личное и коммерческое использование включено в подписку Envato Elements ($16,50/месяц)

37. Arcade Machine

Arcade Machine — еще один из моих любимых игровых шрифтов в этом списке. Дизайнер хотел отдать дань уважения всем вещам, которые он любил в детстве в 80-х, и черпал вдохновение в ретро-аркадных играх, synthwave и Miami Vice. Это суперностальгия, а ретро-дизайн уникален.

Цена: Личное и коммерческое использование, включенное в подписку Envato Elements (16,50 долларов США в месяц)

38. Nostrum

Nostrum — еще один игровой шрифт, который, как я вижу, хорошо работает для логотипов и товаров киберспортивной команды. Он поставляется в 3 разных стилях шрифта: обычный, курсив и грубый.

Цена: Личное и коммерческое использование, включенное в подписку на Envato Elements (16,50 долларов в месяц)

39. Jumpman

Jumpman — это простой декоративный игровой шрифт с дурацким дизайном. Персонажи наклоняются туда-сюда, словно спрыгивая со страницы, что придает шрифту комичный вид, идеально подходящий для веселых мобильных игр. Дизайнер черпал вдохновение из оригинальной игры Nintendo Donkey Kong.

Цена: Jumpman бесплатен для личного использования, но для коммерческого использования требуется пожертвование. Если вы хотите использовать его в коммерческих проектах, вам нужно связаться с дизайнером.

40. Varino

И последнее, но не менее важное: у нас есть Varino — еще один футуристический научно-фантастический игровой шрифт. Минималистская эстетика и уникальные символы выделяют его среди других научно-фантастических шрифтов. Он поставляется в 5 различных стилях: жирный, нормальный, светлый, выдавливание и контур.

Цена: Личное и коммерческое использование включено в подписку Envato Elements (16,50 долларов в месяц)

Заключительные мысли

Вот и все — 40 лучших игровых шрифтов 2023 года, которые вдохновят вас на следующий творческий проект.

Автор записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *