Страницы

Поиск по вопросам

Показаны сообщения с ярлыком шрифты. Показать все сообщения
Показаны сообщения с ярлыком шрифты. Показать все сообщения

среда, 15 апреля 2020 г.

Преобразование шрифта в массив

#c #шрифты #embedded

                    
Посоветуйте, пожалуйста, утилиты (доступные для скачивания) для преобразования шрифта
в заголовочный файл *.h с массивом, содержащим растр для всех нужных символов для использования
во встраиваемых системах.
Типа такого: Freescale Embedded GUI Converter Utility 2.0 (судя по всему, его так
просто не скачать).    


Ответы

Ответ 1



Нашел ответ на stackoverflow. Предлагается использовать утилиту convert из imagemagick. Например команда: convert -resize 7x13\! -font /Library/Fonts/Arial.ttf -pointsize 10 label:A A.xbm генерирует побитовое представление буквы A: #define A_width 7 #define A_height 13 static char A_bits[] = { 0x00, 0x00, 0x04, 0x0C, 0x0A, 0x0A, 0x1E, 0x1F, 0x11, 0x11, 0x00, 0x00, 0x00, };

вторник, 31 марта 2020 г.

Правильное использование единиц rem

#html #css #шрифты


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

Вот пример:



html {
  font-size: 10px;
}

h1 {
  font-size: 4rem;
}

h2 {
  font-size: 3rem;
}

h3 {
  font-size: 2.5rem;
}

h4 {
  font-size: 2rem;
}

p {
  font-size: 1.4rem;
}

@media screen and (max-width: 600px) {
  html {
    font-size: 6px;
  }
}

  

Simple text

Simple text

Simple text

Simple text

Simple text

Вопрос в том, что делать в таких случаях? Как правильно поступать? Для маленьких шрифтов задавать значения размера в абсолютных величинах?


Ответы

Ответ 1



Подходов для динамической типографики может быть много, я бы на вашем месте обратил внимание на возможности функции calc() и, может быть, на зависимость размера шрифта от ширины экрана — простейшая формула font-size: calc(1rem + 1vw), с деталями коэффициентов надо уже экспериментировать. Также можете поинтересоваться темой CSS-шлюзов. В вашем конкретном случае получается так, что вы задаете базовый размер шрифта 6 пикселей — потому естественно, что текст будет очень мелким. Вот пример, как этого частично можно избежать с применением функции calc() и цсс-переменных. Надо добавить увеличивающий коэффициент к тем значениям, которые становятся слишком мелкими на маленьких экранах, в то время как на больших оставить его равным единице. html { font-size: 10px; --font-ratio: 1; } h1 { font-size: 4rem; } h2 { font-size: 3rem; } h3 { font-size: 2.5rem; } h4 { color: red; font-size: calc(2rem * var(--font-ratio)); } p { color: red; font-size: calc(1.4rem * var(--font-ratio)); } @media screen and (max-width: 600px) { html { font-size: 6px; --font-ratio: 1.25; } }

Simple text

Simple text

Simple text

Simple text

Simple text



C# Как получить строку без шрифтов?

#c_sharp #шрифты


Есть строка

string text = "𝚊𝚗𝚊 𝚝𝚎𝚝𝚢𝚊𝚗𝚊 𝚊𝚗𝚊 𝚝𝚎𝚝𝚢𝚊𝚗𝚊 𝚊𝚗𝚊 𝚝𝚎𝚝𝚢𝚊𝚗𝚊";


как из нее получить оригинальний текст без шрифтов ?

вместо

𝚊𝚗𝚊 𝚝𝚎𝚝𝚢𝚊𝚗𝚊 𝚊𝚗𝚊 𝚝𝚎𝚝𝚢𝚊𝚗𝚊 𝚊𝚗𝚊 𝚝𝚎𝚝𝚢𝚊𝚗𝚊

будет

ana tetyana ana tetyana ana tetyana
    


Ответы

Ответ 1



Вероятно, вам подойдёт одна из форм нормализации: var text = "𝚊𝚗𝚊 𝚝𝚎𝚝𝚢𝚊𝚗𝚊 𝚊𝚗𝚊 𝚝𝚎𝚝𝚢𝚊𝚗𝚊 𝚊𝚗𝚊 𝚝𝚎𝚝𝚢𝚊𝚗𝚊"; // text.Length = 65 text = text.Normalize(NormalizationForm.FormKD); // text.Length = 35 FormKC тоже даёт длину 35. Ссылки на то, что такое нормализация: подробно на английском, чуть-чуть на русском.

пятница, 28 февраля 2020 г.

Шрифт в TextView Android

#android #шрифты #android_textview


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

            TextView textDis = new TextView(this.getContext());
            textDis.setPadding(16, 16, 16, 16);
            textDis.setTextColor(getResources().getColor(R.color.colorBlack));
            textDis.setTextSize(18);
            //Ошибочный код ниже:
            textDis.setTypeface(getResources().getFont(R.font.fira_sans), Typeface.BOLD);


Спасибо за помощь!
    


Ответы

Ответ 1



Для шрифтов рекомендую использовать папку assets и устанавливать вот так: textDis.setTypeface(Typeface.createFromAsset(getAssets(), "my_font_bold.ttf"); Кроме того, чтобы избежать лагов (а если у вас много текстов со своим шрифтом они будут), рекомендую шрифт кэшировать, например так: public class TypeFaces { //---Кэширование шрифта--- private static final Hashtable cache = new Hashtable(); public static Typeface get(Context c, int type) { String name; if (type == 1) name = "my_font.ttf"; else name = "my_font_bold.ttf"; synchronized (cache) { if (!cache.containsKey(name)) { String path = name; try { Typeface t = Typeface.createFromAsset(c.getAssets(), path); cache.put(name, t); } catch (Exception e) { e.printStackTrace(); } } return cache.get(name); } } } И использовать так: textDis.setTypeface(TypeFaces.get(this, 2)); Если у вас много текстов, самым лучшим вариантом будет создать кастомный TextView, где в init() шрифт будет будет выставляться автоматически. Либо можно воспользоваться методом из support библиотеки: textDis.setTypeface(ResourcesCompat.getFont(context, R.font.my_font));

пятница, 14 февраля 2020 г.

Как вставить шрифт в word документ?

#шрифты #ms_word


Я нашёл в интернете шрифт, который хочу использовать при написании текста в документе
Word.
Я могу этот шрифт добавить в Windows. Но, если я отправлю этот документ другому человеку,
у которого этот шрифт не установлен, то что будет?

Что надо: чтобы человек, который получил этот документ, видел текст в корректном
виде, без дополнительной установки шрифтов в Windows.

Это возможно? Если да, то как?
    


Ответы

Ответ 1



Внедрите шрифт, если вы хотите поделиться документом. Установив новый шрифт, вы сможете использовать его только на своем компьютере и принтере. Если вам нужно поделиться документом, содержащим новый шрифт, с каким-либо человеком, такой шрифт на другом компьютере отображаться не будет (только если этот шрифт не установлен на другом компьютере). Чтобы решить эту проблему, внедрите шрифт в документ; в этом случае шрифт будет отображаться на любом компьютере. Имейте в виду, что внедрение шрифта в документ приведет к увеличению размера файла документа (так как он будет включать файлы шрифтов). В Word нажмите «Файл» – «Параметры». Нажмите «Сохранение». Поставьте флажок у «Внедрить шрифты в файл». В выпадающем меню выберите открытый документ. Подумайте, хотите ли вы внедрить только те знаки, которые используются в текущем документе. Это позволит вам уменьшить размер файла документа, особенно если вы используете только несколько знаков нового шрифта. Сохраните и поделитесь документом с другими пользователями. Шрифты будут автоматически внедрены в документ при его сохранении. Источник: https://ru.wikihow.com/добавить-шрифт-в-Microsoft-Word

Как изменить шрифт во всем приложении?

#android #android_studio #шрифты #textview


Долго искал код для того чтобы сделать кастомный шрифт на все приложение

и наконец то нашел его! Огромное спасибо Глебу Кравченко!

Ссылка на источник: http://dajver.blogspot.com/2014/10/blog-post.html
    


Ответы

Ответ 1



Суть в том, что нам необходимо создать класс-утилиту которая будет создавать TypeFace и конвертировать все вьюхи в нужный нам шрифт, вот как он будет выглядеть: import android.content.Context; import android.graphics.Typeface; import java.lang.reflect.Field; public class TypefaceUtil { public static void overrideFont(Context context, String defaultFontNameToOverride, String customFontFileNameInAssets) { try { final Typeface customFontTypeface = Typeface.createFromAsset(context.getAssets(), customFontFileNameInAssets); final Field defaultFontTypefaceField = Typeface.class.getDeclaredField(defaultFontNameToOverride); defaultFontTypefaceField.setAccessible(true); defaultFontTypefaceField.set(null, customFontTypeface); } catch (Exception e) {} } } Затем необходимо создать папку assets и в ней создать папку fonts для наших шрифтов. Далее нужно добавить эту строку в главное активити, в метод onCreate: TypefaceUtil.overrideFont(getApplicationContext(), "SANS_SERIF", "fonts/Roboto-Regular.ttf"); Вместо "Roboto-Regular.ttf" вы указываете свой шрифт. Также можно сделать этот код на какую-нибудь кнопку. И в заключении добавляете в файл styles.xml эти строки: Все! Запускаете приложение и наслаждаетесь)

четверг, 13 февраля 2020 г.

Подключение шрифта и Opera 9.64

#css #шрифты #opera #кроссбраузерность


В opera 9.64 не подключается шрифт.

@font-face {
 font-family: 'PT Sans';
 font-style: normal;
 font-weight: 400;
 src: local('PT Sans'), local('PTSans-Regular'),
  url(../fonts/37660512ac27f770b4231a4d31c0ae96.eot),
  url(../fonts/37660512ac27f770b4231a4d31c0ae96.eot?#iefix) format('embedded-opentype'),
  url(../fonts/37660512ac27f770b4231a4d31c0ae96.woff) format('woff'),
  url(../fonts/37660512ac27f770b4231a4d31c0ae96.ttf) format('truetype'),
  url(../fonts/37660512ac27f770b4231a4d31c0ae96.svg) format('svg');
}


Скорее всего из-за того, что не поддерживается в ней CSS3 (@font-face).

В консоли никаких ошибок нет. Это как-то исправимо?
    


Ответы

Ответ 1



Действительно, в Opera 9.64 согласно официальной документации движка Presto еще не реализована поддержка CSS font-face, она появляется с версии Presto 2.2 а это Opera 10.0/Opera Mobile 9.7 И то, судя по отзывам она ужасно глючит в 10-11 версиях. Правда если это как-то поможет, частично поддерживается font-face для svg, то есть Вы можете попробовать загрузить svg-шрифт для текста внутри svg. На этом решения которые мне удалось найти, заканчиваются. Если у мсье много свободного времени и любви к искусству, он может детектить версию браузера и при виде старой оперы показывать версию с контентом засунутым внутрь svg. Главное детям это не показывайте.

Ответ 2



@font-face доступен в ранних версиях CSS. Попробуйте указать абсолютный путь для подключаемых шрифтов. Также есть мнение, что Opera отказывается подключать шрифты когда имя пользователя Windows написано кириллицей.

воскресенье, 9 февраля 2020 г.

Увеличение шрифта на 6 пунктов с каждой новой строчкой

#javascript #шрифты


Дана задача: Запросить у пользователя число от 1 до 10. Вывести его на страницу прописью
10 раз в столбик, увеличивая размер шрифта на 6 пунктов.
Вот pastebin как я пытался её решить. https://pastebin.com/2gZrBLmX.
Помогите пожалуйста!



num = prompt('Enter number from 1 to 10')
if ((num > 10) || (num < 1)) {
  alert('Error. Type number from 1 to 10')
} else {
  for (var q = 1; q <= 10; q++) {
    document.write("
" + num) for (var y = 1; y <= 10; y++) { document.getElementById('res' + y).style.fontSize = fontSize + "50px"; } } } body { position: absolute; width: 100%; top: 40%; text-align: center; }


Ответы

Ответ 1



Вообщем-то у вас хороший код, только в этой строчке вам нужно додумать логику document.getElementById( 'res' + y).style.fontSize = fontSize + "50px"; Вам нужно завести переменную на размер шрифта, в каждой итерации цикла её увеличивать, и потом делать fontSize+"px". Кроме того возможно ваши два цикла объединить в один. Для этого, например можно задавать стили inline, например
.

Ответ 2



Размер шрифта можно получить с помощью getComputedStyle() Ну а далее я бы сделал так : var num = prompt('Enter number from 1 to 10'); var size = parseFloat(window.getComputedStyle(document.body, null).getPropertyValue('font-size')); if (num > 10 || num < 1) { alert('Error. Type number from 1 to 10'); } else { for (var i = 1; i <= 10; i++) { var div = document.createElement('div'); div.innerText = num; div.style.fontSize = size + 'px'; document.body.append(div); size += 5; } }

Ответ 3



Приветствую. JS для решения данной задачи не нужен. CSS (SCSS) достаточно. Если по какой-то причине препроцессор не используется (не верю), тогда можно воспользоваться переменными css или, в крайнем случае, скопировать выход после sass-а: .preview { @for $i from 1 through 10 { > div:nth-child(#{$i}) { font-size: 1px * $i * 6; } } } https://codepen.io/rasdaniil/pen/KZNgyP

Ответ 4



К сожалению, у меня не работает с window.getComputedStyle, хоть и на сайте всё показывает... var num = prompt('Enter number from 1 to 10'); var size = parseFloat(window.getComputedStyle(document.body, null).getPropertyValue('font-size')); if (num > 10 || num < 1) { alert('Error. Type number from 1 to 10'); } else { for (var i = 1; i <= 10; i++) { var div = document.createElement('div'); div.innerText = num; div.style.fontSize = size + 'px'; document.body.append(div); size += 5; } }

среда, 5 февраля 2020 г.

Сравнение скорости загрузки серверного шрифта и google-шрифта

#html #css #вёрстка #шрифты #google_fonts


На англоязычном стаке задавал вопрос о проблемах подключения шрифта через @font-face.

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

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


Ответы

Ответ 1



Для начала, стандартные плюсы и минусы CDN: + Используется многими сайтами, поэтому весьма вероятно, что будет взято из кэша браузера, что позволит сэкономить на количестве запросов к серверу и объёме загружаемых данных. + Снижает нагрузку на сервер, поскольку ресурс теперь отдаётся не им, а сторонним (в данном случае гугловским) сервером. + Позволяет увеличить число потоков одновременной загрузки. Браузеры используют ограничение - не более 8 потоков загрузки на один домен. Но CDN принадлежит другому домену, поэтому получается 8 потоков на твой сайт и ещё по 8 на каждый чужой домен. Минусы, в основном, сводятся к зависимости от стороннего ресурса: − Если он по какой-то причине недоступен, то у тебя на сайте шрифта не будет. Для скриптов часто делается фоллбек. − Если CDN вдруг начнёт отдавать что-то другое, пользователи увидят результат раньше тебя. Для собственного сервера ведь ты сначала проверишь, что изменилось и только потом изменённые файлы окажутся у пользователей. Пример такой проблемы: Как загрузить шрифт Roboto v15?. ? Теперь есть два сайта, которые можно пытаться взломать. Впрочем, не думаю. что это актуально для шрифтов, да и у гугловских серверов должна быть надёжная защита. Но в случае подмены скрипта все сайты, использующие его, окажутся под угрозой. Хотя, от этого в некоторой мере помогает перманентное кэширование - клиенты, у которых файл уже есть в кэше, на сервер за ним даже не пойдут. − Если свой сервер находится в локальной/корпоративной сети, то скорость доступа к нему выше, чем к CDN. Кроме того, с ним можно работать даже если интернет недоступен. Теперь что касается именно шрифтов: ? Гуглошрифты позволяют указать набор интересующих тебя символов, что позволит сократить объём файлов шрифта. С другой стороны, чем более хитрый набор ты укажешь, тем меньше вероятность, что нужный файл уже будет в кэше браузера. + Скорее всего, гуглошрифты уже оптимизированы под использование на веб-сайтах. Не могу сказать, как именно, но на 90% уверен, что если это возможно, то они об этом позаботились.

Ответ 2



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

пятница, 24 января 2020 г.

Android ActionBar custom text font

#java #android #шрифты #actionbar #span


Большинство людей в интернете советуют для этого следующую конструкцию: 

SpannableString s = new SpannableString("My Title");
    s.setSpan(new TypefaceSpan(this, "My_Font.ttf"), 0, s.length(),
            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    getSupportActionBar().setTitle(s);


Но у меня горит красным (this, "My_Font.ttf"). Нашёл на англицком StackOverFlow брата
по несчастью, ему посоветовали:


  please get the activity/application context and pass it to
  constructor rather than this as this will give currently running class
  while you need the current context.


Я пытался. Сначала писал MyActivity.getApplicationContext(); вместо this. Он сказал 


  non static method cannot be referenced from static context. 


Потом перед конструкцией писал Context context; context = getApplicationContext();
и в скобках Context context вместо this. В этом случае он подчёркивал уже пробел между
Context и context. Я чувствую, что хожу вокруг да около, но всё никак не попадаю. Что
делать? 

UPDATE#1

Нашёл полный код применения конструкции. Красным больше ничто не подчёркивается,
но Activity вылетает. 

class TypefaceSpan extends MetricAffectingSpan {
        /** An LruCache for previously loaded typefaces. */
        private  LruCache sTypefaceCache = new LruCache(5);

        private Typeface mTypeface;

        /**
         * Load the {@link Typeface} and apply to a spannable.
         */
        public TypefaceSpan(Context context, String typefaceName) {
            mTypeface = sTypefaceCache.get(typefaceName);

            if (mTypeface == null) {
                mTypeface = Typeface.createFromAsset(context.getApplicationContext()
                        .getAssets(), String.format("fonts/%s", typefaceName));

                // Cache the loaded Typeface
                sTypefaceCache.put(typefaceName, mTypeface);
            }
        }

        @Override
        public void updateMeasureState(TextPaint p) {
            p.setTypeface(mTypeface);
        }

        @Override
        public void updateDrawState(TextPaint tp) {
            tp.setTypeface(mTypeface);
        }}
    Context context;
    context = getApplicationContext();
    SpannableString s = new SpannableString("My Title");
    s.setSpan(new TypefaceSpan(context, "FDMedian.ttf"), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
getSupportActionBar().setTitle(s);


UPDATE#2

логи с ошибками: 

01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
FATAL EXCEPTION: main
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.morpheus.sketc_000.morpheuscompanygames/com.morpheus.sketc_000.morpheuscompanygames.Activity2}:
java.lang.RuntimeException: native typeface cannot be made
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.app.ActivityThread.access$600(ActivityThread.java:141)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.os.Handler.dispatchMessage(Handler.java:99)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.os.Looper.loop(Looper.java:137)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.app.ActivityThread.main(ActivityThread.java:5103)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at java.lang.reflect.Method.invokeNative(Native Method)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at java.lang.reflect.Method.invoke(Method.java:525)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at dalvik.system.NativeStart.main(Native Method)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
 Caused by: java.lang.RuntimeException: native typeface cannot be made
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.graphics.Typeface.(Typeface.java:175)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.graphics.Typeface.createFromAsset(Typeface.java:149)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at com.morpheus.sketc_000.morpheuscompanygames.Activity2$1TypefaceSpan.(Activity2.java:35)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at com.morpheus.sketc_000.morpheuscompanygames.Activity2.onCreate(Activity2.java:54)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.app.Activity.performCreate(Activity.java:5133)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.app.ActivityThread.access$600(ActivityThread.java:141) 
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.os.Handler.dispatchMessage(Handler.java:99) 
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.os.Looper.loop(Looper.java:137) 
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at android.app.ActivityThread.main(ActivityThread.java:5103) 
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at java.lang.reflect.Method.invokeNative(Native Method) 
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at java.lang.reflect.Method.invoke(Method.java:525) 
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
01-25 00:18:42.939 20035-20035/com.morpheus.sketc_000.morpheuscompanygames E/AndroidRuntime:
    at dalvik.system.NativeStart.main(Native Method) 

    


Ответы

Ответ 1



Есть несколько причин, которые могут вызвать java.lang.RuntimeException: native typeface cannot be made: используете неправильное расширение разместили шрифты в папке с ресурсами (корень assets), а не внутри assets/fonts/ не добавили файл с шрифтами имя файла с шрифтом должен быть написан строчными буквами(например, надо переименовать MyFont.ttf в myfont.ttf)

Класс Font. Как изменить расстояние между буквами и сделать менее жирным текст?

#c_sharp #winforms #шрифты


Как увеличить расстояние между буквами и сделать еще менее жирным текст?

Font font = new Font("Courier New", 10, FontStyle.Regular);
SolidBrush brush = new SolidBrush(Color.Black);
graf.DrawString("Надпись", font, brush, 130, 16);



    


Ответы

Ответ 1



Скорее всего, объект Graphics был получен из класса изображения. Что-то вроде: var img = new Bitmap(...); graf = Graphics.FromImage(img); При этом у него заданы определённые значения свойств, которые приводят к рендерингу текста жирным и на вид слипшимся. Задайте свойство: graf.TextRenderingHint = TextRenderingHint.AntiAlias; Попробуйте разные значения.

Ответ 2



Как увеличить расстояние между буквами Например, используя для рисования текста функции GDI вместо GDI+: using System; using System.Windows.Forms; using System.Drawing; using System.Runtime.InteropServices; namespace WindowsFormsTest1 { public partial class Form1 : Form { [DllImport("gdi32.dll")] public static extern int SetTextCharacterExtra( IntPtr hdc, int nCharExtra ); [DllImport("gdi32.dll")] static extern bool TextOut(IntPtr hdc, int nXStart, int nYStart, string lpString, int cbString); [DllImport("gdi32.dll")] public static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj); IntPtr hfont; public Form1() { InitializeComponent(); Font font = new Font("Courier New", 10, FontStyle.Regular); hfont = Font.ToHfont(); } private void panel1_Paint(object sender, PaintEventArgs e) { IntPtr hdc = e.Graphics.GetHdc(); try { var res = SetTextCharacterExtra(hdc, 10); //расстояние между символами IntPtr prev_font = SelectObject(hdc, hfont); string str = "Надпись"; TextOut(hdc, 130, 16, str, str.Length); SelectObject(hdc, prev_font); } finally { e.Graphics.ReleaseHdc(hdc); } } } }

четверг, 23 января 2020 г.

Custom fonts in widget

#android #android_studio #шрифты #widgets #typeface


Здесь написано, что чтобы использовать свои шрифты нужно их превращать в картинку
с помощью битмапа и вставлять в виджет эту картинку. Вопрос 5-и летней давности, неужели
эта проблема так и не решена? Английские шрифты в Android Studio приятные, а вот кириллические
шрифты явно не доработаны. Есть ли какой-то способ без костылей свои шрифты внедрить?
    


Ответы

Ответ 1



Есть способ, выдолжны добавить свои шрифты в папку assets в папке приложения (где хранится папка java и папка ресурсов), если её нету, то создайте в том месте где описано выше. Пример исползования: textView.setTypeface(Typeface.createFromAsset(getAssets(), "tahoma.ttf"));

среда, 22 января 2020 г.

Почему scss так компилирует переменные?

#css #css3 #scss #шрифты


Этот вопрос касается Icomoon в целом.

Не могу разобраться почему scss так компилит символы, но они работают, если в пути
к шрифту указан не только шрифт, но и кэш шрифта.

Связанный вопрос: что это за кэш?



$icomoon-font-path: "fonts" !default;
$icon-bell: "\e900";
$icon-like: "\e901";
$icon-paceholder: "\e902";
$icon-search: "\e903";
$icon-star: "\e904";
$icon-vision: "\e905";
$icon-vision-off: "\e906";
$icon-angle-left: "\e907";
$icon-angle-right: "\e908";
$icon-arrow-right: "\e909";
$icon-angle-bottom: "\e90a";
$icon-chat-angle-bottom: "\e90b";
$icon-chat-angle-top: "\e90c";






@import "variables";

@font-face {
  font-family: 'Icomoon';
  src:  url('#{$icomoon-font-path}/Icomoon.eot?r3waic');
  src:  url('#{$icomoon-font-path}/Icomoon.eot?r3waic#iefix') format('embedded-opentype'),
    url('#{$icomoon-font-path}/Icomoon.ttf?r3waic') format('truetype'),
    url('#{$icomoon-font-path}/Icomoon.woff?r3waic') format('woff'),
    url('#{$icomoon-font-path}/Icomoon.svg?r3waic#Icomoon') format('svg');
  font-weight: normal;
  font-style: normal;
}

[class^="icon-"], [class*=" icon-"] {
  /* use !important to prevent issues with browser extensions that change fonts */
  font-family: 'Icomoon' !important;
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;

  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.icon-bell {
  &:before {
    content: $icon-bell;
  }
}
.icon-like {
  &:before {
    content: $icon-like;
  }
}
.icon-paceholder {
  &:before {
    content: $icon-paceholder;
  }
}
.icon-search {
  &:before {
    content: $icon-search;
  }
}
.icon-star {
  &:before {
    content: $icon-star;
  }
}
.icon-vision {
  &:before {
    content: $icon-vision;
  }
}
.icon-vision-off {
  &:before {
    content: $icon-vision-off;
  }
}
.icon-angle-left {
  &:before {
    content: $icon-angle-left;
  }
}
.icon-angle-right {
  &:before {
    content: $icon-angle-right;
  }
}
.icon-arrow-right {
  &:before {
    content: $icon-arrow-right;
  }
}
.icon-angle-bottom {
  &:before {
    content: $icon-angle-bottom;
  }
}
.icon-chat-angle-bottom {
  &:before {
    content: $icon-chat-angle-bottom;
  }
}
.icon-chat-angle-top {
  &:before {
    content: $icon-chat-angle-top;
  }
}





    


Ответы

Ответ 1



Sass при компиляции utf-8 юникод файлов - переводит подобные вашим последовательности в юникод-символы. Почему вы видите квадраты вместо символов в редакторе? Потому что в вашем моноширинном шрифте эти символы не отрисованы. Но они отрисованы в шрифте Icomoon, который подключается на сайте, и там в итоге символы корректно отображаются. Резюмируя: Это нормальное поведение, и по поводу скомпилированных символов беспокоиться не стоит. Однако, если вдруг ваши файлы хранятся в ASCII-кодировке - Sass все равно будет компилировать символы в них, хотя по логике - не должен. На гитхабе уже 3 года висит открытый тикет по теме. Можно почитать, но разумный способ решения - перевести свои стили в utf-8-кодировку.

Ответ 2



Это известная бага, можно экранировать, например так: $icon-like: "e901"; @function unicode($str) { @return unquote("\"")+unquote(str-insert($str, "\\", 1))+unquote("\""); } .icon-like { &:before { content: unicode($icon-like); } } А ещё достаточно компактно и изящно получается, если использовать списки, а не отдельные переменные: $icons: ( bell: "e900", like: "e901", paceholder: "e902", search: "e903", star: "e904", vision: "e905", vision-off: "e906", angle-left: "e907", angle-right: "e908" ); @each $name, $str in $icons { .icon-#{$name}:before { content: unquote("\"")+unquote(str-insert($str, "\\", 1))+unquote("\""); } }

Помогите с кроссбраузерностью иконок

#css #safari #шрифты


Так отображается в хроме,



@font-face {
  font-family: 'Material Icons';
  font-style: normal;
  font-weight: 400;
  src: url(https://fonts.gstatic.com/s/materialicons/v28/2fcrYFNaTjcS6g4U3t-Y5ewrjPiaoEww8AihgqWRJAo.woff)
format('woff');
}

.material-icons {
  font-family: 'Material Icons';
  font-weight: normal;
  font-style: normal;
  line-height: 1.9;
  letter-spacing: normal;
  text-transform: none;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

.jub-icon-mask.icon-huge {
  width: 128px;
  height: 128px;
  line-height: 128px;
  padding: 0;
  text-align: center;
  font-size: 64px;
  box-sizing: content-box;
  border-radius: 50%!important;
}

.jub-icon-mask.bg-blue {
  background-color: #2196F3;
  color: rgba(255, 255, 255, .87);
}

i {
  font-size: 64px;
  font-weight: 300;
}
cloud_done
А так в safari,как исправить?


Ответы

Ответ 1



В новых сафари отображается нормально, для старых браузеров используйте код, как указано в мануале: Вместо: cloud_done Вставьте: Ваш пример: @font-face { font-family: 'Material Icons'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/materialicons/v28/2fcrYFNaTjcS6g4U3t-Y5ewrjPiaoEww8AihgqWRJAo.woff) format('woff'); } .material-icons { font-family: 'Material Icons'; font-weight: normal; font-style: normal; line-height: 1.9; letter-spacing: normal; text-transform: none; white-space: nowrap; word-wrap: normal; direction: ltr; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; } .jub-icon-mask.icon-huge { width: 128px; height: 128px; line-height: 128px; padding: 0; text-align: center; font-size: 64px; box-sizing: content-box; border-radius: 50%!important; } .jub-icon-mask.bg-blue { background-color: #2196F3; color: rgba(255, 255, 255, .87); } i { font-size: 64px; font-weight: 300; }


суббота, 11 января 2020 г.

Подключение шрифта без указания толщины

#css #шрифты


Имеется шрифт с несколькими видами толщины:
Museo Sans Cyrl 100
Museo Sans Cyrl 500
Museo Sans Cyrl 900  

Подключаю следующим образом, но не работает:  

@font-face {
    font-family: "Museo Sans Cyrl";
    src: url("../fonts/Museo Sans Cyrl 100.ttf") format(truetype);
    font-weight: 100;
}

@font-face {
    font-family: "Museo Sans Cyrl";
    src: url("../fonts/Museo Sans Cyrl 500.ttf") format(truetype);
    font-weight: 500;
}

@font-face {
    font-family: "Museo Sans Cyrl";
    src: url("../fonts/Museo Sans Cyrl 900.ttf") format(truetype);
    font-weight: 900;
}


Работает только тогда, когда каждый отдельно пропишу с указанием толщины:  

@font-face {
    font-family: "Museo Sans Cyrl 900";
    src: url("../fonts/Museo Sans Cyrl 900.ttf") format(truetype);
    font-weight: 900;
} ...  


Может, я чего-то не знаю о подключении?
    


Ответы

Ответ 1



Плохая практика плодить разные имена одного того же шрифта, еще и прописывать им разные жирности. Такой код плохо поддерживается. Новый разработчик должен знать все ваши "придуманные" названия несуществующих шрифтов, и при добавлении нового начертания, или изменении шрифта может может появиться много работы. Если шрифт один, он должен быть один и у него может быть несколько начертаний. Вообще не прописывать жирность не получится, и совершенно не ясно зачем это делать. По умолчанию в браузере, в нормализе или в резет жирность всегда будет прописана и как правило это - 400 т.е. normal. Вы этот шрифт не добавляете, и соответственно по умолчанию вы обращаетесь к этому шрифту с таким начертанием, а его нет. Либо добавьте по умолчанию жирность 500, либо добавьте этот шрифт с жирностью 400. Вот пример подключения в вашем случае. @font-face { font-family: 'Museo Sans Cyrl'; src: url('MuseoSansCyrl-100.eot'); src: url('MuseoSansCyrl-100.woff2') format('woff2'), url('MuseoSansCyrl-100.woff') format('woff'), url('MuseoSansCyrl-100.ttf') format('truetype'), url('MuseoSansCyrl-100.svg#MuseoSansCyrl-100') format('svg'), url('MuseoSansCyrl-100.eot?#iefix') format('embedded-opentype'); font-weight: 100; font-style: normal; } @font-face { font-family: 'Museo Sans Cyrl'; src: url('MuseoSansCyrl-500.eot'); src: url('MuseoSansCyrl-500.woff2') format('woff2'), url('MuseoSansCyrl-500.woff') format('woff'), url('MuseoSansCyrl-500.ttf') format('truetype'), url('MuseoSansCyrl-500.svg#MuseoSansCyrl-100') format('svg'), url('MuseoSansCyrl-500.eot?#iefix') format('embedded-opentype'); font-weight: 500; font-style: normal; } @font-face { font-family: 'Museo Sans Cyrl'; src: url('MuseoSansCyrl-900.eot'); src: url('MuseoSansCyrl-900.woff2') format('woff2'), url('MuseoSansCyrl-900.woff') format('woff'), url('MuseoSansCyrl-900.ttf') format('truetype'), url('MuseoSansCyrl-900.svg#MuseoSansCyrl-100') format('svg'), url('MuseoSansCyrl-900.eot?#iefix') format('embedded-opentype'); font-weight: 900; font-style: normal; } body { position: relative; font-family: 'Museo Sans Cyrl', sans-serif; font-weight: 500; } h1 { font-weight: 900; } i { font-weight: 100; } И уберите пробелы в именах файлов.

Ответ 2



Абсолютно такая же проблема с этим же шрифтом. Все испробовал, попробовал для интереса твой способ с указанием толщины шрифта в названии, и заработало. @font-face { font-family: 'Museo Sans Cyrl 500'; src: url('Museo_Sans_Cyrillic/MuseoSansCyrl_500.otf') format('otf'); font-weight: 500; .nav { font-family: 'Museo Sans Cyrl 500';

Ответ 3



У вас же разные файлы с шрифтами а пробуете прописать всех под одно имя для каждого Font-Family дайте отдельное имя. Например: @font-face { font-family: "Museo Sans Cyrl twing"; src: url("../fonts/Museo Sans Cyrl 100.ttf") format(truetype); font-weight: 100; } @font-face { font-family: "Museo Sans Cyrl Regular"; src: url("../fonts/Museo Sans Cyrl 500.ttf") format(truetype); font-weight: 500; } @font-face { font-family: "Museo Sans Cyrl Bold"; src: url("../fonts/Museo Sans Cyrl 900.ttf") format(truetype); font-weight: 900; }

Ответ 4



В общем, товарищи, такая дичь. Не знаю, чем это объяснимо, надеюсь, кто-нибудь объяснит, но работает у меня только следующим образом: @font-face { font-family: "Museo Sans Cyrl"; src: url("../fonts/MuseoSansCyrl100.ttf") format(truetype), url("../fonts/MuseoSansCyrl100.woff") format(woff), url("../fonts/MuseoSansCyrl100.woff2") format(woff2); font-weight: 300; font-style: normal; } @font-face { font-family: "Museo Sans Cyrl"; src: url("../fonts/MuseoSansCyrl500.ttf") format(truetype), url("../fonts/MuseoSansCyrl500.woff") format(woff), url("../fonts/MuseoSansCyrl500.woff2") format(woff2); font-weight: 500; font-style: normal; } @font-face { font-family: "Museo Sans Cyrl"; src: url("../fonts/MuseoSansCyrl900.ttf") format(truetype), url("../fonts/MuseoSansCyrl900.woff") format(woff), url("../fonts/MuseoSansCyrl900.woff2") format(woff2); font-weight: 700; font-style: normal; } h1 { font-family: "Museo Sans Cyrl 700"; } h2 { font-family: "Museo Sans Cyrl 500"; } Только когда толщина подписывается в конце названия.

четверг, 9 января 2020 г.

Как подключать шрифты при сборке scss на webpack?

#шрифты #webpack #scss


Пользуясь гайдами, пытаюсь собрать все свои стили в одну сборку на Webpack.
Имеется главный файл, в него импортируется другой, в котором несколько правил @font-face
с путями к файлам шрифтов. При сборке Webpack выдаёт ошибку по этим путям, говорит:
нужен специальный загрузчик:


  ERROR in ./fonts/a_coppergothcaps-bold.ttf Module parse failed:
  Unexpected character ' ' (1:0) You may need an appropriate loader to
  handle this file type. (Source code omitted for this binary file)


Но мне не то чтобы нужно (или нужно?) добавлять эти файлы в сборку. Мне достаточно,
если в сборке останутся эти правила, и браузер сам подключит шрифты по ссылкам в них.
Как сказать Webpack, чтобы не пытался обрабатывать эти пути, но просто вставлял их,
как есть? 
Или я неправильно вижу решение проблемы? Может, я шрифтами неправильно распоряжаюсь?

Вот такие правила в конфиге: 

module: {
        rules: [
            {
                test: /\.scss$/,
                use: ExtractTextPlugin.extract({
                    fallback: 'style-loader',
                    use: ['css-loader', 'sass-loader']
                })
            }
        ]
    },

    


Ответы

Ответ 1



Ссылка на полный конфиг Вот мой способ подключения шрифтов для SCSS: { test: /\.(eot|svg|ttf|woff|woff2)$/, use: [ { loader: 'file-loader?name=./assets/fonts/webfonts/[name].[ext]' }, { loader: 'file-loader?name=./assets/fonts/Roboto/[name].[ext]' } ] } Что бы это заработало нужно установить file-loader После этого нужно загрузить шрифты в SCSS: @font-face { font-family: 'Roboto Black'; src: url("/fonts/Roboto/Roboto-Black.ttf"); } Настройки webpack-dev-server: devServer: { contentBase: [path.resolve(__dirname, "build"), path.resolve(__dirname, "assets")], compress: true, port: 4200, historyApiFallback: true, noInfo:true } UPDATE 1 У меня описания шрифтов находятся в файле src/fonts.scss и файл src/variable.scss для хранения переменных размеров, цветов и т.п. В variable.scss импортируется fonts.scss -> @import "/fonts.scss"; и после этого в любом другом файле стилей можно импортировать variable.scss. В определении шрифтор должен указываться не относительный путь до файла, а url. Можно протестировать корректность вводимого адреса в браузере, например http://localhost:4200/fonts/Roboto/Roboto-Black.ttf, если было предложено сохранить файл значит все правильно.

Ответ 2



module: { rules: [ { test: /\.(svg|png|gif|jpg)$/, exclude: /fonts/, loader: 'file-loader', options: { name: '[name].[ext]' } }, { test: /\.(ttf|eot|woff|svg|woff2)$/, use: { loader: "file-loader", options: { name: `${PATHS.assets}css/fonts/[name].[ext]`, } } },plugins: [ new CopyWebpackPlugin([{ from: `${PATHS.source}/img`, to: `${PATHS.assets}img` }, { from: `${PATHS.source}/static`, to: '' }]) ]} Дабы избежать конфликта, я сделал так, благодарю что подняли этот вопрос, а также за данные на него ответы.

вторник, 7 января 2020 г.

Как получить список доступных шрифтов в Delphi?

#delphi #шрифты


Как получить список доступных в системе шрифтов и, например, закинуть его в ComboBox
на форме?
    


Ответы

Ответ 1



Свойство Fonts типа TStrings содержит список шрифтов, доступных на данном компьютере. Его можно использовать в приложении, чтобы проверять, имеется ли на компьютере тот или иной шрифт. Например, можно поместить в приложении компонент TComboBox (поле со списком) и в обработчике события OnCreate формы поместить туда перечень всех доступных шрифтов: ComboBox1.Items := Screen.Fonts; ComboBox1.ItemIndex := 0; Тогда в нужный момент можно выбрать подходящий шрифт из списка. Для этого в обработчик события OnClick или OnChange списка можно вставить следующий оператор: Memo1.Font.Name := ComboBox1.Items[ComboBox1.ItemIndex];

понедельник, 6 января 2020 г.

Какие иконки использовать: svg или font

#svg #шрифты #icon


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

В 2012 году для таких целей использовали, почти везде и у меня в том числе, иконки
картинками png, gif. Но, с нашими инновациями и усовершенствованием старых функций,
теперь большинство сайтов перешли на рисование иконок шрифтом (font) или же на svg.
Это позволяет сократить вес всех изображений и сделать их гибкими под разные размеры.

Но всё же, какие иконки лучше: svg или font? По моему мнению, лучше SVG, так как
легче в использовании и имеет собственные плюшки.

Какие иконки использовать: svg или font?
    


Ответы

Ответ 1



Svg потому что: Это векторный формат. Иконка может быть многоцветной. Svg можно инлайнить в html и стилизовать при помощи css. Css позволяет добавить некую интерактивность в иконку. Svg можно анимировать. Нет проблем со скринридерами. Не возникает проблем, если по какой-то причине браузер использует дефаултный шрифт.

Ответ 2



После долгого использования шрифтов-иконок, перешел на SVG и понял, что конкретно их различает по моему мнению: Легкость в освоении и использовании - тут лучше шрифты с иконками, так как нет ничего проще, вставить готовые конкретные названия иконок в CSS элемента, либо ещё проще, установить библиотеку шрифтов и просто менять класс элемента. Но теперь про функциональность и возможности - тут несомненно, как мне кажется, побеждает именно SVG, потому что с ним можно делать множество трансформаций и анимаций. Размер - собственно эти 2 технологии популярны тем, что занимают очень маленький размер памяти, и оба хорошо справляются со своей задачей. Что в итоге, мне кажется, что лучше все же SVG, так как он имеет больше возможностей для дальнейшего его изменения, а потребляет примерно столько же ресурсов.

Ответ 3



Шрифт на то и сделан, чтобы хорошо отображать мелкие символы и значки. Браузер будет гораздо лучше отображать значки в формате шрифта, чем в SVG. Он подстроится под тип экрана, настройки сглаживания шрифтов. Посмотрите мой пример. Я взял иконку из Font Awesome, выдернул ее из svg шрифта и вставил в inline svg. Специально для минусующих я сделал ее Pixel-Perfect Покрутите размер шрифта, чтобы убедиться, что шрифт сохраняет четкость при масштабировании (что и не удивительно), a SVG хорош только на 14px и на достаточно больших размерах: $('input').on("change click",function(){ $('p').css('font-size',$('input').val()+'px') }) p { font-size: 16px; } svg { width: 1em; height: 1em; } .fa { font-size: 1em; }

- Это шрифт

- Это SVG

Поскольку иконка сделана 14 на 14px а мне нужно 16px, я увеличиваю SVG и тут получается размытая лажа. (Естественно, 14px выглядят одинаково хорошо, но в этом и дело, получается, я не могу масштабировать SVG!) Никто не говорит, что SVG это плохо, SVG - это картинка и ведет себя так, как вела бы себя картинка. А шрифт на мелких размерах, сохраняет читаемость благодаря хинтингу. В SVG теряются детали, смазываются края, в общем, выглядит коряво. Конечно, всегда есть возможность сделать "Pixel-perfect" SVG (располагать вектор ровно по пикселям), чтобы картинка была четкой на нужном размере. Но тогда куда денется хваленая гибкость вектора? Что если потребуется немного увеличить иконку? А что если дизайнер нарисует вам кривой вектор? Выходит SVG - это хорошее решение только для программиста. Для программиста, которому плевать как выглядит конечный продукт. С другой стороны, если вы будете делать идеальные "Pixel-perfect" иконки и не будете изменять их размер, SVG не будет хуже (но практика показывает обратное) И, кстати, SVG еще и медленнее отрисовывается.

четверг, 2 января 2020 г.

Полетели шрифты в консоли

#linux #ubuntu #шрифты #консоль #elementary_os


В консоли линукса (elementary) полетели шрифты, во всех остальных приложениях шрифты
нормальные, устанавливал всё для msf и VirualBox, вот скрин:


    


Ответы

Ответ 1



Так как по Elementary OS пока не так много ответов в русскоязычном StackOverflow, переведу ответ с англоязычного ресурса, ссылку в комментариях на который предоставил KoVadim. Чтобы изменить шрифт в терминале, вам нужен dconf-editor. Установите его, если вы еще этого не сделали: sudo apt install dconf-tools Запустите его и следуйте по пути: org > gnome > desktop > interface > monospace-font-name Введите название нужного шрифта и размер шрифта. Например: Anonymous Pro 11. Вы также можете использовать команду: gsettings set org.pantheon.terminal.settings font 'Anonymous Pro 11' в терминале, вместо dconf-editor.

вторник, 31 декабря 2019 г.

Как удалить ненужные символы в шрифте формата TTF?

#шрифты


Как удалить ненужные символы в шрифте формата TTF?

У меня есть шрифт, там много ненужных для меня символов. Могу ли я как-то удалить
их отуда?
    


Ответы

Ответ 1



Скачиваем бесплатную программу FontForge. Запускаем ее и выбираем нужный шрифт. С зажатым Shift мышью выбираем нужные символы. Инвертируем выделение: Правка→Выделить→Инвертировать выделение Удаляем ненужные символы: Кодировка→Отцепить и удалить символы... Вместо символов должны появиться зачеркнутые квадраты: Сохраняем шрифт. Основано на ответе к вопросу: "how to remove characters from a font file?"