Неплохую статью прислал @duglasher. В блоге Instagram Engineering вышла статья про то, как они пилили type mode (a.k.a. лень фотографировать, просто разукрашу текст) на iOS и Android. Часть про адаптацию размера текста довольно простая, а вот часть про
#instagram #text #span
https://instagram-engineering.com/building-type-mode-for-stories-on-ios-and-android-8804e927feba
Span мне понравилась, есть интересные советы, которые много где могут пригодиться.#instagram #text #span
https://instagram-engineering.com/building-type-mode-for-stories-on-ios-and-android-8804e927feba
Instagram Engineering
Building Type Mode for Stories on iOS and Android
Instagram recently launched Type Mode, a new way to post creative, dynamic text styles and backgrounds to Stories. Type Mode was an…
Нашёл шпаргалку (уверен, не я один постоянно это забываю) про `FontMetrics`. И да, как всегда Android Framework во всей красе - baseline считай сам :)
#cheatsheet #font #text
#cheatsheet #font #text
Очень насыщенный доклад про рисование текста. Пока что из всех Google I/O докладов мне встретилось два настолько насыщенных доклада - этот и про Android rendering pipeline, о нём я писал выше.
Сразу порекомендую посмотреть это видео всем, кому приходится много использовать
Ну и основные highlights:
- Text stack в Android разбит на две части - Java и Native (сразу обратим внимание, что Android контролирует только три верхних уровня - всю Java часть и верхний уровень из Native - Minikin).
* Верхний уровень в Java части - это
* Native часть куда более насыщенная, пройдёмся сверху вниз: Minikin - библиотека для text measurement, line breaking и hyphenation (перенос слов), ICU - работа с Unicode, HarfBuzz - text shaping, FreeType - генерирует bitmaps для всех gliffs, Skia - основной графический движок системы
- Начиная с Android L у нас есть System Wide Word Layout LRU Cache - кэширует до 5000 слов, чтобы переиспользовать результаты обсчётов, когда это же слово снова нужно будет отрисовать
- В Android P ускорили использование simple break strategy вместе с normal или full hyphenation frequency - в детали углубляться не буду, подробности можно найти в видео
- Если с сервака, например, нам приходит строчка, в которой намешано несколько языков, и мы знаем, где какой язык используется, то для правильного переноса слов/строк текста нужно использовать
-
- У нас есть три класса:
- Ещё я увидел интересную фишку с
- Если нужно отрисовать какой-то очень длинный текст, не нужно его целиком запихивать в
- Ну и новая фишка в Android P -
За сим откланиваюсь.
#text #span #textview #talk
https://youtu.be/x-FcOX6ErdI
Сразу порекомендую посмотреть это видео всем, кому приходится много использовать
Span, особенно внутри RecyclerView.Ну и основные highlights:
- Text stack в Android разбит на две части - Java и Native (сразу обратим внимание, что Android контролирует только три верхних уровня - всю Java часть и верхний уровень из Native - Minikin).
* Верхний уровень в Java части - это
TextView и EditText, затем идут Layout, Paint и Canvas* Native часть куда более насыщенная, пройдёмся сверху вниз: Minikin - библиотека для text measurement, line breaking и hyphenation (перенос слов), ICU - работа с Unicode, HarfBuzz - text shaping, FreeType - генерирует bitmaps для всех gliffs, Skia - основной графический движок системы
- Начиная с Android L у нас есть System Wide Word Layout LRU Cache - кэширует до 5000 слов, чтобы переиспользовать результаты обсчётов, когда это же слово снова нужно будет отрисовать
- В Android P ускорили использование simple break strategy вместе с normal или full hyphenation frequency - в детали углубляться не буду, подробности можно найти в видео
- Если с сервака, например, нам приходит строчка, в которой намешано несколько языков, и мы знаем, где какой язык используется, то для правильного переноса слов/строк текста нужно использовать
LocaleSpan-
Span делятся на Paragraph spans (применяются на параграф, очевидно) и Character spans (применяются посимвольно, тоже очевидно). В свою очередь Character spans делятся на Appearance affecting (после применения нужно сделать redraw) и Metric affecting (после применения нужно сделать и remeasure, и redraw). Про написание своих Span в докладе тоже есть кусок, поэтому посмотрите, если нужно- У нас есть три класса:
SpannedString (нельзя mutable text, нельзя mutable markup), SpannableString (нельзя mutable text, можно mutable markup) и SpannableStringBuilder (можно mutable text, можно mutable markup). В докладе показали сравнение производительности SpannableString и SpannableStringBuilder (они по-разному устроены внутри: один на массиве, второй на деревьях), результаты следующие: до 250 Span они ведут себя одинаково, дальше SpannableStringBuilder выигрывает. Ну, вы поняли, что использовать :)- Ещё я увидел интересную фишку с
<annotaion/> тэгом внутри strings.xml. Допустим, у вас есть какая-то строка, переведённая на несколько языков. Вам нужно применить какой-то Span на определённое слово в этой строке. Но в одном языке это слово стоит в одном месте, а в другом языке - в другом. Вот ровно эту проблему решает <annotation/> тэг. Если такая задача перед вами стоит - сходите посмотрите.- Если нужно отрисовать какой-то очень длинный текст, не нужно его целиком запихивать в
TextView. Разбейте на параграфы и используйте RecyclerView.- Ну и новая фишка в Android P -
Magnifier. Это такая экранная лупа, которая поможет с выделением текста. Для TextView и EditText она будет работать из коробки, но и к своим custom View её можно прикрутить.За сим откланиваюсь.
#text #span #textview #talk
https://youtu.be/x-FcOX6ErdI
YouTube
Best practices for text on Android (Google I/O '18)
This session will cover common usages of text in Android apps, and common pitfalls developers fall into that can be avoided. Topics to be covered include styling with spans, working with editable text, measuring your own text, when and how to use different…
Пост про
#text #canvas #staticlayout
StaticLayout. Первая часть (до properties включительно) - довольно хорошее интро. А вот вторую часть серьёзно всрали, на мой взгляд :)#text #canvas #staticlayout
Medium
Drawing multiline text to Canvas on Android
Leveraging the Android framework and Kotlin to make Canvas text drawing more powerful
Вот тут рассказывают о том, почему и как изменился дизайн текстовых полей в Material.
#design #material #text
#design #material #text
Medium
The Evolution of Material Design’s Text Fields
How user research reshaped the design of Google’s open-source text fields
Очередной чудесный пост от Никиты Прокопова (да, опять!) про то, почему размер шрифта в наших уютных редакторах, вообще говоря, не очень-то и работает, и всё приходится подбирать заново, когда меняем один модный шрифт с лигатурами на другой.
Напомнило тот анекдот про связь ширины двигателя Space Shuttle с шириной двух древнеримских лошадиных задниц.
#font #ui #text
Напомнило тот анекдот про связь ширины двигателя Space Shuttle с шириной двух древнеримских лошадиных задниц.
#font #ui #text
tonsky.me
Font size is useless; let’s fix it
What happens when you set fontSize: 32 in your favorite editor
Старая (если не сказать древняя, аж 2003! Ух!) статья, название которой в общем-то говорит само за себя: The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets. И всё.
#text #unicode #encoding
#text #unicode #encoding
Joel on Software
The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
Ever wonder about that mysterious Content-Type tag? You know, the one you’re supposed to put in HTML and you never quite know what it should be? Did you ever get an email from your friends in…
Казалось бы, где это видео, а где этот канал. Ну никак не должно было одно с другим пересечься. Я сам в шоке, чесслово. Но вот вам "Writing for interfaces" видос с WWDC. Там описывают подход к составлению текстов на экранах, да и к составлению самих экранов в общем-то. Когда в следующий раз сяду писать обречённый на смерть пет-проект, постараюсь не лениться и смотреть на коммуникацию с пользователем через такую вот призму, чесслово.
#talk #design #text
#talk #design #text
Apple Developer
Writing for interfaces - WWDC22 - Videos - Apple Developer
The words and phrases you choose for your app matter. Whether you're writing an alert, building an onboarding experience, or describing...
❤🔥9😁2❤1
История появления UTF-8. Роб Пайк и Кен Томпсон буквально за пару дней нафигачили спеку и встроили в Plan 9 OS.
#history #text #encoding
#history #text #encoding
🔥3
Очень хорошо поднимают проблему редактирования текстов в мобильных интерфейсах. Прямо жиза, всегда плевался с этого. Если не хочется много читать, хотя бы посмотрите видео подхода, который они предлагают. Выглядит интересно.
#text #keyboard #mobile
#text #keyboard #mobile
❤6👍2
Вышел пост Никиты Tonsky про unicode, UTF-8 и т.п. Как всегда отличная работа, и как всегда горячо рекомендую прочесть.
#text #encoding #unicode
#text #encoding #unicode
👍3❤2