что такое двухбайтный шрифт

«Вы выбрали шрифт с одним byte, чтобы заменить шрифт с двойным byte» при замене японского шрифта

Office 365 ProPlus переименован в Майкрософт 365 корпоративные приложения. Для получения дополнительной информации об этом изменении прочитайте этот блог.

Симптомы

Рассмотрим следующий сценарий. Вы открываете Microsoft® PowerPoint® 2010, русская версия, которая содержит наборы японских шрифтов. На вкладке Главная в группе редактирования в статье Replace щелкните Заменить шрифты. В списке Replace drop-down выберите японский шрифт, который необходимо заменить. Вы выбираете другой японский шрифт в списке With drop-down. Затем нажмите кнопку Заменить.

В этом сценарии шрифт не заменяется. Кроме того, появляется приведенное ниже сообщение об ошибке:

Для замены шрифта с двойным счетом выбран шрифт с одним byte. Выберите шрифт с двойным счетом.

Причина

Эта проблема возникает, если верны следующие условия:

Если эти условия верны, вы не можете заменить шрифт, и вы получите сообщение об ошибке.

Обходной путь

Метод 1. Вручную замените шрифт

Чтобы решить эту проблему, можно найти каждый текстовый объект, использующий шрифт, который необходимо заменить, а затем выбрать текст. Затем на вкладке Home в группе Шрифт в списке капля шрифта выберите шрифт, на который необходимо заменить старый шрифт.

Метод 2. Замените шрифт на компьютере с установленным шрифтом

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

Статус

Корпорация Майкрософт подтвердила, что это проблема в продуктах Майкрософт, перечисленных в разделе «Применяется к».

Источник

Исчерпывающий пост о внедрении шрифтов в PowerPoint

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

В двух словах, PP может внедрять шрифты в презентацию. Но не все и не всегда. Эта возможность зависит от версии программы и от формата шрифта. И это таит в себе ряд засад.

На маке внедрение шрифтов поддерживается c версии PowerPoint 16.17 (Сентябрь 2018). Более ранние версии просто не отобразят внедренные шрифты. Засада, но ладно. Кстати, на Windows шрифты можно внедрять с версии 3.0 (Май 1992).

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

Существует три основных формата: TrueType, PostScript и OpenType. Остановимся на каждом на пару слов.

TrueType. Один из двух самых распространенных форматов. Большая часть шрифтов на вашем компьютере – TrueType. Файлы имеют расширение *.ttf.

PostScript. Древнючий формат, заточенный под профессиональную печать. Файлы имеют расширение *.pfb, *.pfm, *.afm. Сегодня встречается чрезвычайно редко.

OpenType. Своеобразный синтез TrueType и PostScript. Это самый современный и прокачанный формат. Может иметь расширение *.otf или *.ttf. В первом случае шрифт основан на PostScript, во втором – на TrueType. И это вторая засада: разные форматы шрифтов могут иметь одинаковое расширение файла!

Итак, мы разобрались какие бывают шрифты, теперь отброс им те, которые PP встроить не может в принципе:

Итого, вы можете внедрять TrueType шрифты с параметрами Editable и Installable и OpenType шрифты на основе TrueType. Вот почему я использую нестандартные шрифты только если экспортирую результат в PDF. Если презентация будет в дальнейшем правиться, я не рискую. За 5 лет работы внедренные шрифты несколько раз конкретно меня подводили своей непредсказуемостью. Слишком много слабых мест и нюансов. Как я уже писал в своем профессионально дневнике, существует много других способов добиться эффекта в презентации.

Свежие версии iOS, Android и веб-версия PowerPoint Online поддерживают внедренные шрифты.

Источник

Как перестать бояться и полюбить mbed [Часть 5]

Продолжаем серию публикаций, посвященных использованию среды ARM mbed для создания прототипа измерительного устройства.

Сегодня я наконец-то заканчиваю описание программной части — остались вопросы связанные с выводом на TFT-дисплей изображений и кириллицы. Сделаем всё красиво.

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

1. Вывод изображений на TFT

Общая схема управления TFT-дисплеем с помощью графического контроллера от FTDI уже была описана в предыдущих статьях. Как и другие связанные с отрисовкой процедуры, вывод изображений на TFT-дисплей аппаратно реализован на графическом контроллере FT801. От управляющего хост-контроллера требуется только передавать на FT801 простые управляющие команды и необходимые данные.

Говоря о загрузке изображений на графический контроллер, следует сразу разделить два подхода к работе с изображениями.

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Во втором случае изображение предварительно сжимается по алгоритму Deflate. Полученный в результате кодирования bitmap занимает гораздо меньше места, поэтому может храниться не только на внешнем носителе, но во встроенной памяти управляющего МК. Изображение загружается на графический контроллер FT8xx в сжатом виде, а распаковка данных выполняется уже графическим контроллером. Для загрузки сжатого изображения служит команда CMD_INFLATE. После того как изображение распаковано, с ним можно работать точно так же, как и в первом случае.

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

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

1.1. Форматирование изображения, компрессия

Алгоритм Deflate изначально создавался для zip-архивов, но благодаря отсутствию патентов успешно используется и для других целей, в том числе для сжатия изображений. Вот, кстати, отличная статья о Deflate и png.

Для преобразования изображения FTDI предлагает несколько консольных утилит, например img_cvt. Также доступны графические оболочки вроде EVE Screen Editor, которые не только позволяют конвертировать изображения, но и вообще сильно упрощают жизнь при создании программ для графического контроллера. По сути, EVE Screen Editor — это эмулятор TFT-модулей Riverdi.

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

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

Используемый мной контроллер FT801 позволяет выводить на TFT-дисплей изображения девяти форматов: черно-белые L1, L4 и L8, а также RGB332, ARGB2, ARGB4, RGB565, PALETTED и ARGB1555, о них можно подробнее почитать в документации проивзодителя. Разные форматы позволяют получить разное соотношение качества изображений и размера кодирующего изображение бинарного файла.

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт
(на рисунке слева направо L1, L4, L8, RGB332, ARGB2, ARGB4, RGB565, PALETTED, ARGB1555)

По идее, наилучшее качество можно получить при использовании формата ARGB1555, однако на практике лучше попробовать разные варианты и подобрать наиболее подходящий. Фотография датчика действительно лучше всего выглядит после преобразования в ARGB1555 или RGB565, однако в какой-то момент мне не хватило встроенной памяти МК и пришлось отказаться от этих форматов в пользу RGB332. Смотрится более-менее прилично, а занимает 1865 байт вместо 7067 и 7816 у ARGB1555 и RGB565 соответственно.

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт
(на рисунке слева направо ARGB2, ARGB4, ARGB1555)

1.2. Загрузка изображения в память графического контроллера

Получив бинарное представление изображения, возвращаемся из Screen Editor в mbed IDE, где в коде программы сохраняем все полученные bitmap как массивы. Иконка для влажности, например, выглядит вот так.

Чтобы загрузить это изображение в память графического контроллера FT801, понадобится отправить с управляющего МК три команды:

CMD_INFLATE — команда, сообщающая FT801, что в его память будет записано сжатое по алгоритму Deflate изображение.
IMAGE_ADDR_HUMIDITY — начальный адрес в памяти графического контроллера RAM_G, по которому будет доступно изображение.
hum_icon — массив, хранящий изображение.

После такой операции иконка «Влажность» будет доступна для вывода на экран пока память графического контроллера не будет очищена программно или в результате сброса.

1.3. Захват изображения

Следующий шаг после загрузки — «захват» изображения.

Командой BITMAP_HANDLE мы присваиваем каждому изображению (объекту Bitmap) указатель — номер от 0 до 31, по которому в дальнейшем можно будет обратиться к изображению.
Команда BITMAP_SOURCE указывает на адрес в памяти RAM_G графического контроллера FT8xx (см. п. Загрузка изображения).
Команда BITMAP_LAYOUT сообщает графическому контроллеру формат изображения и его размеры, а команда BITMAP_SIZE определяет размер выводимого изображения. Изменяя её аргументы можно, например, обрезать картинку справа или слева.

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

1.4. Вывод изображения

После того как выполнены загрузка и захват изображения, его можно вывести на TFT-дисплей. Для этого используются команды группы BITMAP, например для вывода иконки «Влажность» поверх одной из кнопок главного меню я выполняю три команды:

В первых двух аргументах команды VERTEX2II указываются координаты для вывода на экран, а третий аргумент является указателем на иконку «Влажность», который был задан в BITMAP_SOURCE и BITMAP_HANDLE — «0».

Ссылка на полный исходный код проекта приводится ниже.

Использование пользовательских шрифтов

В статье, посвященной началу работы с графическим контроллером серии FT8xx, упоминалась поддержка стандартных виджетов — процедур для вывода относительно сложных графических объектов, которые аппаратно реализованы на графических контроллерах от FTDI. Среди виджетов есть текстовая строка, в mbed-библиотеке FT800_2 выводу строки на дисплей соответствует функция Text().

Аргументы функции — координаты первого символа строки (22, 67), номер используемого шрифта (27), дополнительные опции (0) и, собственно, текстовая строка. С координатами всё понятно, дополнительные опции также относятся только к положению строки на экране, поэтому поговорим о шрифтах.

Номер используемого шрифта — это число от 0 до 31, причем номера с 0 до 15 зарезервированы под пользовательские шрифты, а номера с 16 по 31 соответствуют шестнадцати встроенным шрифтам. Если в вашем приложении достаточно выводить только первые 128 ASCII символов и вам достаточно стандартного начертания этих символов, то можно остановиться на этом месте и не читать статью дальше — просто используйте шрифты с номерами 16-31.

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Если же вам нужны нестандартные начертания цифр и латиницы или требуется вывод символов, выходящих за пределы стандартного набора ASCII (например, кириллицы), то придется разбираться с загрузкой собственных шрифтов.

Для графических контроллеров FT8xx пользовательские шрифты — это почти те же bitmap, что и изображения, поэтому создание нового шрифта во многом повторяет процесс вывода изображений.

2.1. Форматирование шрифта, компрессия

В Screen Editor шрифт импортируется также, как файлы изображений — в окно Content добавляется файл шрифта, а в окне Properties устанавливаются параметры его компрессии: формат, размер и charset.

Формат выбирается из трех опций — L1, L4 и L8. Разница, как и при конвертации изображений, в соотношении качества отрисовки и размера бинарного файла. Размер шрифта просто определяет ширину символов в пикселях, а наибольшего внимания заслуживает поле charset.

Для графических контроллеров FTDI шрифты по умолчанию состоят из 128 ASCII символов.

Если вы используете только эти символы и добавляете новый шрифт только чтобы изменить их начертание — отлично, конвертируйте шрифт не изменяя charset. А если нужно добавить кириллицу или какой-то другой не входящий в ASCII символ, то charset придется заменить. В моём приложении понадобится вся кириллица, цифры, некоторые знаки препинания и математические символы, знаки градуса и процента, а также несколько латинских букв. В итоге измененный charset выглядит следующим образом:

2.2. Загрузка в память графического контроллера

Загрузка нового шрифта повторяет процесс загрузки изображения — сохраняем бинарное представление шрифта как массив и загружаем на FT8xx по определенному заранее начальному адресу в память графического контроллера с помощью команды CMD_INFLATE.

2.3. Захват и установка шрифта

«Захват» пользовательского шрифта выполняется теми же командами, что и захват изображения, разница заключается в том что после команд BITMAP_HANDLE, BITMAP_SOURCE, BITMAP_LAYOUT и BITMAP_SIZE нужно ещё установить новый шрифт через вызов SetFont().

2.4. Использование шрифта

Теперь среди пользовательских шрифтов под номером 3 значится загруженный нами шрифт Roboto Regular. Если бы при конвертации не был изменен charset этого шрифта, то для смены встроенного шрифта номер 27 на Roboto Regular нужно было бы всего лишь сменить

Однако мы собираемся выводить нестандартные для контроллера FT8xx символы, поэтому вместо явного указания строки («Current humidity (rH)») придется каждый раз лепить эту строку из отельных символов.

Рассмотрим строку «Относительная влажность». Задача состоит в том, чтобы каждому символу этой строки поставить в соответствие его номер в charset.

Если компилятор поддерживает кириллицу, то каждому символу начиная с прописных букв АБВ и заканчивая строчными эюя (с пропуском букв ё и Ё) будет соответствовать значение от 0xC0 до 0xFF. Значит чтобы сопоставить символы строки с номерами этих символов в charset нужно вычесть из кода каждого символа фиксированное значение. Например, если буква А в charlist занимает 32-ую позицию (0x20), а следующие за А буквы идут в том же порядке что и в таблице CP1251, то из кода каждого символа строки «Относительная влажность» (кроме пробела) нужно будет вычесть значение 0xA0.

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Однако компилятор может и не поддерживать кириллицу, mbed-овский как раз не поддерживает. Это значит, что компилятор не воспринимает кириллицу как коды с 0xC0 до 0xFF, поэтому мне не остается ничего кроме как использовать юникод, точнее UTF-8.

Каждый символ, не входящий в основную ASCII таблицу — кириллица, знаки ° и ± — представляется как двухбайтный код UTF-8. Я беру код каждого символа и ставлю ему в соответствие номер в своём charset.

Для латинских букв, которые тоже есть в charlist, нужно также заменить юникод на номер в charset, разница лишь в том что код латинских букв и других знаков ASCII типа точки, запятой и процента состоит из одного, а не двух байт.

Символ конвертируемой строкиКод UTF-8Порядковый номер в моём charset
АБВ… ноп0xD090… 0xD0BF43… 90
рст… эюя0xD180… 0xD18F91… 96
°0xC2B0112
±0xC2B1113
пробел0x2032
0… 90x30… 0x3933… 43
.0x2E108
,0x2C109
:0x3A110
и так далее

Для выполнения такого преобразования строки создана соответствующая функция.

Таким образом, чтобы вывести на TFT-дисплей строку «Относительная влажность» (или любую другую строку на русском языке) нужно сначала выполнить её преобразование, а затем использовать стандартный вывод строки, не забыв указать номер шрифта в качестве третьего аргумента.

3. Итоговый результат

Исходный код готового проекта доступен на developer.mbed.org. К теме сегодняшней статьи относятся следующие файлы проекта:

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

В последней статье данного цикла поделюсь историей создания корпуса для этого девайса.

Источник

Истинные имена TrueType шрифтов и экспорт в PDF

В книге Урсулы Ле Гуин “Волшебник Земноморья” магия требовала знания “истинного имени” того, с чем маг работает. Думаю, любой программист согласится, что идея здравая. URLи, UUIDы и прочие уникальные идентификаторы объектов — это то, с чем мы имеем дело постоянно. И, так же как в волшебном мире, эти истинные имена бывает не так-то просто узнать. По крайней мере для имен шрифтов это так.

Мне нужно было реализовать в нашем программном продукте экспорт текстовых блоков в PDF. Для экспорта используются проприетарные библиотеки Adobe PDF Library (http://datalogics.com/products/pdfl/) и надстройка над ней DLI (Datalogics Library Interface). Не буду углубляться в эти библиотеки, думаю они мало кому интересны. Но полагаю, что проблема, с которой я столкнулся, общая для любой реализации PDF экспорта.

Каждый шрифт (возьмем, например, Arial) имеет 4 различных начертания — обычный, жирный, наклонный и жирный наклонный. Т.е. Arial, Arial Bold, Arial Italic и Arial Bold Italic. Каждое начертание хранится в отдельном TTF файле или в отдельной секции TTC файла. И если мы хотим вывести в PDF файл наклонный или жирный шрифт, мы должны в вызове соответствующей функции явно указать “Arial Italic” или “Arial Bold”. Но в текстовом блоке, который мы экспортируем, указано, что его шрифт “Arial” и отдельно заданы атрибуты Bold и Italic. И EnumFontsFamiliesEx возвращает нам только имя “Arial” и все! В Как же получить нужную нам строку “Arial Italic”?

Очевидное решение — просто приписать строчку “Italic” к имени шрифта — работает не всегда. Например, оно не работает со шрифтом “Lucida Sans Typewriter”. PDF библиотека выдает ошибку, если мы передаем “Lucida Sans Typewriter Italic”.

Ключ к решению (pun intended) — HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts. Достаточно посмотреть в содержимое этого ключа и становится ясно, что нужно было передать “Lucida Sans Typewriter Oblique”. Тогда все работает.
Формат записей в этом ключе нигде не документирован, но, вроде бы, очевиден:

«Arial (TrueType)»=«arial.ttf»
«Arial Italic (TrueType)»=«ariali.ttf»
«Arial Bold (TrueType)»=«arialbd.ttf»
«Arial Bold Italic (TrueType)»=«arialbi.ttf»
«Batang & BatangChe & Gungsuh & GungsuhChe (TrueType)»=«batang.ttc»

«Mangal (TrueType)»=«mangal.ttf»
«Mangal Bold (TrueType)»=«mangalb.ttf»
«Meiryo & Meiryo Italic & Meiryo UI & Meiryo UI Italic (TrueType)»=«meiryo.ttc»
«Meiryo Bold & Meiryo Bold Italic & Meiryo UI Bold & Meiryo UI Bold Italic (TrueType)»=«meiryob.ttc»
«MS Gothic & MS PGothic & MS UI Gothic (TrueType)»=«msgothic.ttc»

«Lucida Sans Typewriter Regular (TrueType)»=«LTYPE.TTF»
«Lucida Sans Typewriter Bold (TrueType)»=«LTYPEB.TTF»
«Lucida Sans Typewriter Bold Oblique (TrueType)»=«LTYPEBO.TTF»
«Lucida Sans Typewriter Oblique (TrueType)»=«LTYPEO.TTF»

Видно, что для TTC коллекций шрифты, содержащиеся в них, указаны через “ & “.

Алгоритм для установления соответствия между общим именем шрифта и именами начертаний получается такой: для каждого имени начертания отрезаем по одному слову с конца, пока остаток не совпадет с каким-нибудь именем, полученным из EnumFontsFamiliesEx. Кроме того отрезанные слова проверяем на совпадение со словами “Bold”, “Ilalic”, “Semibold”, “Oblique” и запоминаем соответcтвующий атрибут для этого начертания. Например для семейства“Lucida Sans Typewriter”:

Теперь если нужно вывести шрифт “Lucida Sans Typewriter” жирным и наклонным, то мы знаем, что этому начертанию соответствуюет имя “Lucida Sans Typewriter Bold Oblique” и передаем это имя в PDF библиотеку.

Тут, правда, поджидает еще одна неприятность. Например шрифт “Mangal” имеет только жирное начертание (“Mangal Bold”), а вот наклонного у него нет. Хотя мы можем поставить атрибут “наклонный” этому шрифту и Windows GDI в этом случае самостоятельно исказит имеющееся начертание при выводе на экран. При экспорте в PDF же придется проделать это самостоятельно. PDF библиотека может позволить задать матрицу преобразования при выводе текста. Например, в моем случае, это выглядело так:

ASFixedMatrix fontSkew;
if (bSimulateItalic)
<
double angle = 15;
fontSkew.a = fixedOne; // x scale
fontSkew.b = fixedZero; // rotate & skew
fontSkew.c = FloatToASFixed(tan(_PI * angle / 180)); // rotate & skew
fontSkew.d = fixedOne; // y scale
fontSkew.h = 0; // x translation
fontSkew.v = 0; // y translation
dlpdfcontentfontskew(. &fontSkew);
>

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

Кстати, если уж мы узнаем, что “MS Pゴシック” это “MS Gothic”, то это решает и вторую проблему, по крайней мере для случая, когда в реестре хранится английское имя. Мы просто передадим в PDF библиотеку имя “MS Gothic” и все заработает. Остается установить это соответствие.
Для большинства начертаний из HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts мы поставили в соответствие имена шрифтов из EnumFontsFamiliesEx. Но для некоторых начертаний пары не нашлось. Еще бы — в реестре у нас “MS Gothic”, а EnumFontsFamiliesEx вернул “MS Pゴシック”.
В этом случае остается только самостоятельно разобрать TTF/TTC файл и найти там соответствующее японское имя.

Разбор TTC/TTF файла — задача несложная. За работающий образец можно взять исходники проекта “ttf2eot” code.google.com/p/ttf2eot. Сам формат TTF/TTC хорошо документирован на сайте Microsoft: www.microsoft.com/typography/otspec. Обратить внимание надо на то, что все данные в TTF хранятся в big endian формате, так что все числа и Unicode-строки надо конвертировать перед использованием.

Свой код я, к сожалению, выложить не имею права, поэтому лишь напишу здесь, что искать.

Одно из найденных имен совпадет с каким-то именем из EnumFontFamiliesEx.

Например для начертания “Meiryo Bold Italic” разобрав meiryob.ttc мы узнаем, что этому начертанию соответствует имя “メイリオ” из EnumFontFamiliesEx.

Остается узнать, является ли это начертание жирным и наклонным. Напрашивается идея тоже взять эту информацию из шрифта, но, как выяснилось экспериментально, эти атрибуты в файле шрифта могут быть неверными. Поэтому возьмем их из имени начертания (“Meiryo Bold Italic”), как уже делали выше. Только отрезать слова будем до тех пор, пока остаток не совпадет с любым именем, извлеченным из TTF файла, а не из выдачи EnumFontFamiliesEx.

Таким образом, если надо экспортировать текстовый блок, набранный наклонным и жирным шрифтом с именем “メイリオ”, мы передаем в PDF библиотеку имя “Meiryo Bold Italic”. Профит!

Источник

Веб любит оптимизированное. Давай оптимизируем загрузрузку и рендеринг шрифтов настолько насколько это возможно.

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

На данный момент существуте четыре формата шрифтов

### Поддержка в браузерах

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Из этой статистики сразу можно сделать несколько выводов *

1) От eot стоит отказаться, так как поддержка только в Internet Explorer

2) От ttf тоже можно отказаться так как есть пересечение с woff контейнером

Я рассматривал вес шрифта на примере OpenSans Regular, но соотношение подойдёт для любого шрифта.

woff и woff2 являются оптимизированными контейнерами для веба и поэтому весят меньше.

## Подключение шрифта на страницу @font-face

Подключать шрифты надо правильно. Да! шрифт можно подключить не правильно.

src: url(‘/path/fonts/OpenSans.woff2’) format(«woff2»),

Здесь стоит обратить внимание на порядок подключения форматов.

Браузеры которые понимают woff2 начнут загружать woff2 версию шрифта и остальные не тронут.

Браузеры которые не понимают woff2 продолжат далее по списку woff, ttf, eot.

Если возможно отказывайся от eot и ttf форматов.

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

Используем только woff и woff2.

woff2 и woff весят гораздо меньше eot и ttf, что ускоряет загрузку шрифта на сайте и начало его отрисовки.

У woff2 доля в браузерах достаточно маленькая, что легко компенсируется woff форматом.

P.S. это серия постов про оптимизацию. Про шрифты ещё будет дополненение, но не хотелось бы уйти за лимит поэтому решил разбить на несколько частей.

Пикабу обучающий. Подписалась! А вопросы можно задавать? По шрифтам и проблемам с ним?

Как раз актуальная тема. Спасибо. Подписался.

Обычно проблемы пользователей не в 10кб шрифтов.

нехорошо писать markdown там, где его нет 🙂

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Угадай, сколько мне лет?

Чтобы не спрашивать напрямую у девушек возраст, всегда спрашивал, кто они по китайскому гороскопу, разброс по годам составляет 12 лет, легко можно догадаться.

Как-то одна девушка сказала, что она родилась в год Быка, и я ей сказал, что она неплохо выглядит для своих 35 лет.

А оказалось, что ей 23 года.

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Доброта

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Разный подход

Недавно хотел найти видео по разборке моего ноутбука для апгрейда, несколько удивлен результатом:

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Выгодный курс

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Так вон оно как

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

То самое место

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Остросюжетый триллер

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Эта кабинка, наверное, всегда свободна

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Экономия на спичках

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

Потом полотенца заменили на тонкие и рвущиеся. Все стали брать по два, чтобы нормально вытереть руки.

Сегодня их порезали на половинки. Народ стал брать по четыре.

Я не знаю, в чем смысл, пока эффект от нововведений ограничивается только тем, что умывальник чаще занят(пока вытащишь 4 штуки) и меняют их чаще. Но менеджерам виднее.

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Не анекдот, а Писание.

Чат мой, люди знакомые, ставлю пятничное моё;)

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Маркетинг

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Невероятно!

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Когда его обнаружили в пещере, спасатели сначала подумали, что это просто мумия.

Но ученые, в дальнейшем изучавшие его, обнаружили, что у него есть пульс, хоть и очень медленный.

Рядом с ним лежали его вещи. На одном из кусков бумаг было написано: «иди спать и хватит верить всему, что читаешь на Пикабу».

Баянометр молчал, извините если уже было 🙂

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

что такое двухбайтный шрифт. Смотреть фото что такое двухбайтный шрифт. Смотреть картинку что такое двухбайтный шрифт. Картинка про что такое двухбайтный шрифт. Фото что такое двухбайтный шрифт

Ответ на пост «Уборщица»

Примерно 15 лет назад я работал в мэрии города на довольно высокой в иерархии муниципальных служащих должности. Был молод и глуп в делах житейских, но прислушивался к советам старших. Моя мама, в первый день моей работы напутствовал меня словами: «в первую очередь здоровайся с уборщицей и тех персоналом, не игнорируй простых людей, они ещё всех вас там переработают.» И я воодушевленный наставлениями мамы, да и воспитанием наученный прежде всего, всегда здоровался с уборщицами, поздравлял их с праздниками, иногда дарил небольшие презенты в виде шоколадок или пирожных. Очень хорошие, трудолюбивые люди и мне искренне было приятно с ними иногда переброситься парой слов. Так вот, отработал я там лет пять, уволился, ушел на другую работу. История поросла быльём, но. Недавно зашёл в мэрию документы сдать по нашей фирме и как назло паспорта нет с собой, грозный охранник не пропустил и я расстроенный уже собирался уходить, но тут вышла одна из тех самых уборщиц, узнала меня, очень искренне порадовалась встрече, рыкнула на охранника: наш человек, почему не пропускаешь! Тот что-то промямлил, мол не положено, но пропустил. Сдал я документы, ушел, а на душе приятно. Вот так вот, всех переработала и мэров и сэров и пэров, да и охрану гоняет.)))

Источник

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

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