Як розрахувати міжрядковий інтервал CSS проти "відстеження" у типографіці?


74

У мене є вказівки від графічного дизайнера щодо макета, який визначає "доріжку 100" для деяких елементів. У CSS letter-spacingце еквівалентна властивість "відстеження".

Враховуючи значення для відстеження, як ви виражаєте це як значення для CSS у пікселях?


Трекінг (інтервал між літерами) можна сміливо виражати в ems.
Ігнасіо Сегура

Відповіді:


67

Чи потрібно використовувати пікселі? Значення конверсій, яке я знайшов, - це значення відстеження 1000, що дорівнює 1 em у CSS, тож у вашому випадку відстеження 100 має бути 0,1 em.

РЕДАГУВАТИ

Щоб перейти від ЕМ до пікселів, використовуйте цей сайт PXtoEM.com . Для вашого конкретного випадку 0,1 em перетворюється на 2px. Однак це засновано на шрифті 16pt, тому вам доведеться налаштувати конкретний розмір шрифту, який ви використовуєте.


1
Все інше в CSS - у пікселях.
Діодей - Джеймс Макфарлейн

@Diodeus: Чому? Відвідувачі можуть збільшити або зменшити веб-сторінку, то чому б не використовувати відносні розміри?
Марсель Корпель

6
@Diodeus: Ось проблема з використанням пікселів у цьому випадку. Скажімо, у вас шрифт стандартного розміру (отже, ви не змінили розмір тексту). Тепер дайте йому відстеження 10px. Виглядає добре, правда? Тепер давайте потроїмо розмір шрифту, відстеження 10 пікселів складає всі літери разом. Тепер вам доведеться вказати нове відстеження для кожної зміни розміру на вашій сторінці, де як використання EM для відносного розміру дозволяє вказати одне відстеження для всіх шрифтів на вашому веб-сайті, і воно само налаштовується залежно від розміру шрифт, до якого він був застосований.
Alex Larzelere

2
Чому? Тому що я можу подивитися на ілюстрацію у Photoshop і легко виміряти речі в пікселях. Я бачу вашу думку щодо проблеми відстеження / масштабування, але мені все одно потрібно вирішити проблему, оскільки вона існує.
Діодей - Джеймс Макфарлейн,

Це не зовсім точно. Багато шрифтів використовують одиниці вимірювання на EM більше, ніж 1000. Одиниці вимірювання на EM потрібно буде підтвердити (за допомогою програми, такої як FontForge), інакше цей розрахунок b 1000 може ввести в оману.
inspinznz

32

TL; DR: розділіть відстеження на 1000 і використовуйте em's


Трохи довідкового letter-spacingтексту завжди застосовується до тексту, тому слід використовувати відносну одиницю довжини. Як font-sizeможе змінити користувач або навіть каскад.

Краща одиниця довжини для тексту є emблоком.

Ця одиниця представляє обчислений розмір шрифту елемента. Якщо він використовується в самій властивості font-size, він представляє успадкований розмір шрифту елемента. CSS Length - Мережа розробників Mozilla

Чому відстеження відрізняється?

Програми макетування, такі як Adobe Photoshop, Illustrator та InDesign, використовують emїх для відстеження, але маніпулюють блоком, так що дизайнерам легше грати з ними. Щоб полегшити, вони помножують його на 1000.

Підказка Indesign: Відстеження (у тисячних частках ем

Перетворення відстеження назад в цілому em«з

Для цього нам просто потрібно розділити номер відстеження на 1000, щоб повернути одиницю на цілу ем, яку CSS може використовувати.

Отже 50/1000 = 0.05em.

Обчислення цього в CSS / SCSS

Якщо ви використовуєте SCSS і хочете рішення для багаторазового використання - ось міксин.

// Convert illustrator, indesign and photoshop tracking into letter spacing.

@function tracking( $target ){
  @return ($target / 1000) * 1em;
}

@mixin tracking( $target ){
  letter-spacing: tracking( $target );
}

Для використання вищевказаних функцій ви можете просто зробити це.

.example {
  @include tracking(50);
}

Крім того, ви можете просто вбудувати математику без комбінації, щоб вона була менш абстрактною:

.example{
  letter-spacing: #{(50/1000)}em;
}

Результатом для наведених вище прикладів буде:

.example {
  letter-spacing: 0.05em;
}

Примітка: Не слід використовувати значення на основі пікселів, оскільки пікселі фіксовані та ламаються, коли:

  1. Дизайнер змінює розмір шрифту. Вам потрібно буде перерахувати значення.

  2. Якщо користувач змінює розмір тексту, дизайн веб-сайтів не відображатиметься бажаним або навіть нечитабельним для читання.

Крім того, браузери відображають текст, відмінний від того, як це роблять програми графічного дизайну, не дивуйтеся, якщо дизайнер налаштує відстеження / інтервал між буквами під час огляду реалізації.


Дякую, це дуже корисно. Ви бачили шрифти відповідей Малкалкава з використанням різних одиниць вимірювання на ЕМ? Це призводить до сумнівів, чи використовують Adobe програми звичайно 1000, або вони використовують одиниці виміру для відповідного шрифту. Якщо пізніше вірно, тоді формулу не завжди буде ділити на 1000. Вона буде змінюватися залежно від шрифту. Я, однак, не знаю, чи Adobe заблокував 1000 як множник, чи вони отримують множник із самого шрифту.
натхненний

17

Відстеження конверсії CSS «інтервал між літерами»

1 =1/1000 em
100 =100/1000 em =0.10 em
200 =200/1000 em =0.20 em

4
Як ви отримали ці цифри? У вас є джерело для цього?
Джейк Вілсон,

2

Здебільшого наведені вище відповіді є досить точними, однак, використовувана 1000 передбачає, що ваш шрифт має розмір Em 1000, і це не завжди так. Я бачив шрифти з розміром Ем 1024, а деякі навіть 2048, що, очевидно, матиме вплив.

Ви можете дізнатися розмір шрифту шрифту, відкривши його всередині щось на зразок Font Forge, а потім вибравши пункт меню Елементи -> Інформація про шрифт та вкладку Загальне.


Дякуємо, що вказали на це. Після перевірки через FontForge, так трапляється, що дизайнер, призначений для веб-розробки, над якою я працюю, має 2000 одиниць на EM. Я зробив усі перетворення на основі 1000 одиниць, про які я згадував на багатьох веб-сайтах для таких речей.
inspinznz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.