Установка параметров шрифта. Оформление текста

Форматирование символов влияет на их форму и размер. С помощью такого фор­матирования можно придать тексту привлекательность и выделить самые важные фраг­менты.

Размер шрифта - кегль - определяется в пунктах (пт), от 4 до127 пт. 1пт = 1/72 дюйма = 0,353 мм. Размер шрифта касается только общей высоты символов - ширину шрифта измерять не принято.

Форматирование символов можно осуществить тремя способами.

      1. Форматирование с помощью значков ленты

Для форматирования символов необходимо выделить фрагмент текста.

Для установки стиля текста (Заголовок, обычный или другой), открыть вкладку Главная – группу Стили и выбрать нужный стиль;

Примечание: Текст стиля Заголовок автоматически выносится в создаваемое позже оглавление документа.

Кнопки форматирования шрифта расположены на вкладке Главная – группа Шрифт

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

Для изменения размера шрифта нажать кнопку правее списка размеров шрифтаи выбрать в раскрывшемся списке нужный размер;

Для изменения начертания шрифта щелкните по соответствующей кнопке:полужирный, курсив, подчеркнутый.

Кроме того, можно установить различного рода эффекты в начертании символов: зачеркнутый, надстрочный и подстрочный символы, а также эффекты анима­цииицвет выделения текста, и цвет текста.

      1. Форматирование шрифта с помощью диалогового окна Шрифт

Диалоговое окно открывается кнопкой вгруппе Шрифт вкладки Главная. В поле Образец демонстрируется результат производимых действий.

      1. Форматирование шрифта с помощью контекстного меню

Команды контекстного меню вызываются щелчком правой кнопки мыши на выде­ленном фрагменте текста

Задание 7

      Проведите форматирование шрифта в соответствии с табли­цей 1: для 1 и 2 абзацев используйте ленту, для 3 – диалоговое окно и для 4 контекстное меню.

      В первом абзаце попробуйте введение в текст различных эффек­тов.

      Напечатайте формулы X 2 +Y 2 =Z 2 и H 2 SO 4 , с использованием надстрочных и подстрочных символов

Таблица 1

абзаца

Шрифт

Размер шрифта

Цвет шрифта

Начертание

символов

Times New Roman

черный

Курсив

красный

Полужирный

синий

Подчеркивание

Bookman Old Style

16

зеленый

Полужирный курсив

Примечания:

    если какого-либо шрифта нет у вас в Word , выберите другой произ­вольно;

      1. Эффект разрядки и уплотнения текст. Смещение символов вверх, вниз

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

Смещение символов вверх, вниз

Выполняется там же в диалоговом окне Шрифт, выбрать опцию Смещение: в поле на указать величину смещенияи нажать кнопку ОК;.

Изменение регистра текста

Замена строчных букв прописными и наоборот может производиться путем измене­ния их регистра. Выделите текст, который требуется изменить. На вкладке Главная щелк­ните значок Регистр (рис. 16) и выберите нужную команду.

Рисунок 16. Изменение регистра текста

Можно также использовать «горячие клавиши» SHIFT + F 3 . Выберите нужный спо­соб изменения регистра.

Создание буквицы

Выделите абзац, содержащий текст, который требуется начать с большой заглавной буквы (буквицы). На вкладке Вставка – группа Текст выберите команду Буквица. Выбе­рите параметр В тексте или На поле. Выберите другие необходимые параметры.

К дополнительным относятся параметры шрифта, для установки которых необходимо использовать диалоговое окно Шрифт .

Для отображения диалогового окна Шрифт во вкладке Главная щелкните по значку группы Шрифт или по выделенному фрагменту правой кнопкой мыши и в контекстном меню выберите команду Шрифт .

Диалоговое окно Шрифт имеет две вкладки. Во вкладке Шрифт (рис. 6.14) устанавливаются параметры, определяющие внешний вид символов. Многие из них (шрифт, начертание, размер шрифта и т.д.) доступны в группе Шрифт вкладки Главная или мини-панели инструментов (см. рис. 6.1), но некоторые видоизменения доступны только в этой вкладке.


Рис. 6.14.

Двойное зачеркивание отличается от просто зачеркнутый только двойной линией зачеркивания.

Видоизменения с тенью и контур (рис. 6.16) обычно используют в декоративных целях, например, для заголовков. Видоизменения можно использовать совместно. Настроить параметры тени или контура невозможно.


Рис. 6.16.

Видоизменения приподнятый и утопленный (рис. 17) также обычно применяют в декоративных целях. Наиболее рельефно такой текст смотрится при использовании заливки или фона страницы. Настроить параметры видоизменений невозможно.


Рис. 6.17.

Видоизменение малые прописные заменяет обычные строчные буквы прописными, но несколько меньшего размера, чем обычные прописные буквы (рис. 18). Используют это видоизменение, например, для заголовков. Видоизменение все прописные превращает все буквы в прописные (рис. 18). Более того, во фрагменте текста, оформленном с этим видоизменением, строчные буквы ввести невозможно.


Рис. 6.18.

Видоизменение скрытый делает текст невидимым на экране. Чтобы просмотреть скрытый текст, надо во вкладке Главная в группе Абзац нажать кнопку Отобразить все знаки . Скрытый текст будет отображен с подчеркиванием точечным пунктиром. При этом все параметры оформления будут отображены.

Изменение ширины символов шрифта

Для изменения ширины символов используется раскрывающийся список Масштаб вкладки Интервал диалогового окна Шрифт (см. рис. 6.15). Можно выбрать любое значение из этого списка или, не открывая списка, щелкнуть левой кнопкой мыши в его поле и ввести требуемое значение. Увеличение масштаба используют обычно для заголовков; уменьшение масштаба (до 80…85%) можно применять для "подгонки" длины строк (рис. 19). Допустимый диапазон масштабирования символов – от 1 до 600%. Точность установки масштаба – 1%.


Рис. 6.19.

Изменение интервалов между символами

Применяя раскрывающийся список Интервал вкладки Интервал и рядом расположенный счетчик на диалогового окна Шрифт (см. рис. 6.15), можно изменять интервалы (расстояние) между символами в строке текста.

В раскрывающемся списке Интервал можно выбрать Разреженный или Уплотненный , а в счетчике на установить требуемое значение разрежения или сжатия интервалов. Величина изменения интервалов между символами по умолчанию устанавливается в пунктах (пт), но, при желании, значение можно указать и в сантиметрах или миллиметрах. Для этого следует в поле счетчика на ввести число и через пробел – сокращение см или мм: например, 0,5 см или 3 мм . Расстояние между символами можно изменять с точность до 0,05 пт или 0,01 мм. Разреженный интервал применяют при оформлении заголовков или для выделения отдельных слов в тексте (рис. 20).


Рис. 6.20.

Уплотненный интервал используется в основном для "подбора" текста: удаления коротких последних строк абзацев (рис. 6.21). Уменьшать интервалы рекомендуется не более чем на 0,1…0,3 пт., что почти не заметно. Большее уплотнение затрудняет восприятие текста.

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

Смещение текста по вертикали

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

Чтобы задать смещение, сделайте следующее:

  1. Откройте окно «Шрифт» любым доступным способом;
  2. На вкладке «Дополнительно» в графе «Смещение» выберите направление смещения текста (вверх или вниз) и при помощи регуляторов задайте значение шага. По умолчанию используется значение в 3 пункта. Для равномерного смещения задавайте значения с одинаковой величиной шага. То есть, если первое значение равно 5 пт, то второе – 10 пт, третье – 15 пт и т.д. Впрочем, вы можете располагать текст в любой конфигурации, используя смещение слов или предложений в разных направлениях, при этом, в этих же предложениях могут присутствовать слова, буквы в которых тоже заданы со смещением. В данном случае ограничений только два – смещение возможно только по вертикали и зависит от уровня вашей фантазии.

Рисунок 1. Смещение текста по вертикали

Большие значения смещения

Если вам нужно задать относительно большие значения смещения (20, 30 или 50 пт), удобнее сначала задать направление смещения, а затем уже ввести число в графу «На», нежели сразу же (многократно) щелкать по регуляторам смещения. Также не беспокойтесь о введении значения единицы измерения, если вы задаете значение в пунктах (пт), так как оно используется по умолчанию. Поэтому вам достаточно ввести нужное число, а программа автоматически выполнит смещение в пунктах. Если же вы используете для этого другие единицы измерения, тогда обязательно указывайте их значение после числа (мм, см).

Еще быстрее ввести большие значения смещения можно следующим образом:

  1. Щелкните один раз по регулятору смещения вверх или вниз, в зависимости от нужного направления смещения;
  2. В графе «На» выделите имеющийся текст (после одного щелчка это будет – «1 пт») и введите нужное число;
  3. Нажмите «ОК».
Смещение букв по вертикали

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

Рисунок 2. Смещение букв по вертикали

Растягивание и сжатие текста по горизонтали

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

Чтобы сжать или растянуть текст по горизонтали, сделайте следующее:

  1. Выделите нужный участок текста;
  2. Откройте окно «Шрифт» и перейдите на вкладку «Дополнительно»;
  3. В графе «Интервал» выберите:
  • «Разреженный» — чтобы «растянуть» текст;
  • «Уплотненный» — чтобы «сжать» текст;
  • «Обычный» — чтобы убрать предварительно заданный межзнаковый интервал;

4. В поле «На» напротив графы «Интервал» задайте нужное значение;
5. Нажмите «ОК».

Рисунок 3. Растягивание и сжатие текста по горизонтали

Масштаб шрифта

Обычное соотношение высоты к ширине знаков составляет 100%, это значение по умолчанию. Но когда нужно сделать текст визуально выше или шире, используя определенный шрифт, можно изменить это значение. Например, необходимо задать тексту некоторый налет «готики» вытянув его по высоте, при этом используя привычный Time New Roman, или привлечь внимание к цитате или фразе, «расширив» его. Для этого, соответственно, нужно увеличить/уменьшить отношение высоты знаков к их ширине. Для достижения этой цели, выполните следующее:

  1. Выделите нужный участок текста;
  2. Откройте окно «Шрифт», а затем вкладку «Интервал»;
  3. В графе «Масштаб» задайте нужное вам значение, выбрав из имеющихся восьми (33%, 50%, 66%, 80%, 90%, 100%, 150% и 200%) или набрав произвольное;
  4. Нажмите «ОК»

Рисунок 4. Установка масштаба шрифта

Цвет шрифта

Заливка цветом

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

Чтобы задать цвет шрифта, сделайте следующее:

  1. Выделите нужный фрагмент текста;
  2. Откройте вкладку «Главная» и в группе «Шрифт» нажмите на кнопке открытия меню кнопки «Цвет текста»;
  3. В области «Цвета темы» выберите нужный цвет, если такого нет в палитре, воспользуйтесь возможностями окна «Цвета», щелкнув на «Другие цвета».
Заливка градиентом

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

Чтобы применить градиентную заливку, сделайте следующее:

1 способ:

  1. Выделите нужный участок текста (если необходимо, предварительно задайте ему цвет);
  2. Нажмите на кнопке открытия меню кнопки «Цвет текста» и выберите вкладку «Градиентная»;
  3. Во всплывающем окне выберите один из 13 образцов заливки.

Рисунок 5. Заливка цветом и градиентом

2 способ:

  1. Выделите нужный участок текста и подведите курсор к кнопке «Цвет текста» на всплывающей панели;
  2. Нажмите кнопку открытия меню выбора цвета шрифта;
  3. Выберите нужный вам цвет текста и его заливки описанным выше способом.

Рисунок 6. Заливка цветом и градиентом при помощи всплывающего меню

3 способ:

  1. Выделите нужный фрагмент текста и откройте окно «Шрифт»;
  2. В графе «Цвет текста», нажмите кнопку открытия окна выбора цвета шрифта;
  3. Выберите нужный цвет из представленных образцов.

Рисунок 7. Заливка цветом из окна "Шрифт"

Чтобы задать заливку градиентом из окна «Шрифт», сделайте следующее:

  1. Выделите нужный участок текста;
  2. Любым из известных способов задайте ему нужный цвет;
  3. Откройте окно «Шрифт» и нажмите на кнопке «Анимация»;
  4. В открывшемся окне «Параметры анимации» откройте вкладку «Заливка текста» и щелкните на пункте «Градиентная».
  5. Задайте нужный градиент и щелкните «ОК».

Рисунок 8. Заливка градиентом из окна "Шрифт"

Верхний и нижний индекс

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

1 способ:

  1. Выделите нужный фрагмент текста;
  2. Откройте вкладку «Главная», в группе «Шрифт» нажмите на кнопке «Подстрочный знак» — чтобы задать нижний индекс, или на кнопке «Надстрочный знак», чтобы задать верхний индекс.

2 способ:

  1. Выделите нужный фрагмент текста;
  2. Используйте следующие комбинации клавиш для задания индекса:
  • — нижнего;
  • — верхнего.

Рисунок 9. Верхний и нижний индексы

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

1 способ:

  1. Выделите нужный фрагмент текста;
  2. Откройте вкладку «Главная» и в группе «Шрифт» нажмите на кнопке «Регистр»;
  3. В открывшемся окне выберите нужный способ задания регистра:
  • «Как в предложениях» — первое слово предложения (или выделенного участка текста) начинается с прописных, остальные строчные, вплоть до начала следующего предложения;
  • «Все строчные» — все знаки (буквы, символы) выделенного фрагмента текста будут строчными;
  • «Все прописные» — все знаки выделенного участка текста будут прописными;
  • «Начинать с прописных» — каждое слово начинается с прописных. Это подобно стилистике торжественной речи, когда каждое слово начинается с заглавной буквы;
  • «Изменить регистр» — напротив, слово начинается со строчной. Чаще всего служит для оригинального выделения текста.

2 способ:

  1. Выделите нужный участок текста;
  2. Нажмите и удерживайте клавишу ;
  3. Нажимайте клавишу до тех пор, пока фрагмент текста не примет нужный вид (каждое нажатие задает следующий режим расстановки прописных и строчных букв);
  4. Отпустите клавишу .

Рисунок 10. Установка режима расстановки регистра

Заключение

Работа со шрифтом является одним из основных умений, которые необходимы для эффективной работы с текстовыми редакторами, и Word 2010 не является исключением. Если вы хотите быстро и эффективно создавать и редактировать документы, вам обязательно нужно знать все главные возможности работы со шрифтами. В этой части статьи, посвященной форматированию шрифтов, были рассмотрены не столь известные приемы настройки шрифтов, как в первой части, но не менее полезные. Так, уметь задать набор текста в режиме подстрочного и надстрочного знаков, будет просто необходимо учителям, школьникам и студентам, занимающимся химией, физикой, математикой и другими схожими дисциплинами. Знать, как осуществить смещение текста по вертикали, как его растянуть или сжать, как задать масштаб букв, а также как применить цветовую и градиентную заливку шрифта, будет полезно людям занимающимся написанием книг исторического характера и работающим в области полиграфии. Также это чрезвычайно полезно знать учителям младших классов, которые самостоятельно готовят различный учебно-методический материал – ведь красочно и оригинально оформленный текст, намного легче усваивается детьми, позволяя им легче и быстрее осваивать школьную программу. Ну а знать как «на лету» изменить регистр текста, не прибегая ни к его предварительному форматированию, ни к удалению, с последующим набором «с нуля», нужно буквально каждому, поскольку, как и случайное нажатие , так и обычный пропуск из-за спешки заглавных букв в предложении, случаются почти с каждым из нас.


Узнал, что в UWP API включены средства для получения уникального идентификатора компьютера. Это юнит Windows.System.Profile, класс HardwareIdentification, метод getPackageSpecificToken. Существуют ли способы обратиться к этим средствам из Delphi?
Вообще, я привык считать, что такая идентификация компьютера в принципе невозможна, в отличие от мобильных устройств. Но прогресс, как известно, не остановить.

От

Для задач, связанных с вводом японского текста, мне нужно научиться перехватывать системное сообщение WM_IME_NOTIFY. Насколько могу судить, в FireMonkey эти вещи делаются (если вообще делаются) принципиально иначе, нежели в VCL. Конкретного ничего не нагуглил. Не поможет ли кто?

От

Винда 10, два компа (рабочий ноут и планшет от мелкософта - у первого 100% экран, у другого 200%).
Исходя из габаритов разных там компонентов и другой формы, рассчитываю Top и Left интересующей меня формы. На ноуте выводится где и хотел, а на планшете выше и левее. Смещение не кратно никак масштабу. В доступе планшета нет, как отлаживать не придумаю.
Косяк всё же в в масштабе может быть или иное?

От

В феврале я сетовал, что мое Windows-приложение не хочет нормально запускаться в Linux под Wine 3.0. Но время идет, вышел Wine 3.6 - и теперь один из тестировщиков радостно сообщил, что всё заработало, за вычетом одного досадного момента. А именно: приложение способно сохранять фокус ввода лишь долю секунды, потом теряет. Соответственно, невозможно ничего ввести в текстовые боксы, разве только одну-две буквы. Можно щелкнуть по заголовку приложения, оно опять получит фокус - и через мгновение снова потеряет. Куда именно при этом переходит фокус, непонятно. Тестировщик утверждает, что только мое приложение ведет себя так, все остальные работают нормально.
Нет ли у кого-нибудь идей? Что нужно проверить?

От

В декабре я задавал здесь вопрос о борьбе с перехватами нажатий клавиш компонентом TWebBrowser. Продвинутый пользователь Kami посоветовал тогда, раз уж меня интересует только Windows, поставить хук на клавиатуру. Поделился полезной ссылкой. Добавил, что можно еще много чего нагуглить. Что-то действительно нагуглилось - но не в том объеме, чтобы я смог четко понять, как это следует делать. Вопросов много. Куда именно должна быть воткнута функция KeyboardProc? Что в ней должно содержаться, чтобы управление передавалось уже написанному обработчику события FormKeyDown? Многие также упоминают о возникающих проблемах с юникодом, и хорошо было бы понять, как уберечься от них.
Буду очень признателен, если кто-нибудь осветит эту темную для меня материю.

От

Как преобразовать тип HString в обычную строку?
Нагуглил упоминания о функции TWindowsString.HStringToString, которая должна находиться в System.WinrtHelpers. Но такого юнита в поставке Delphi не наблюдаю. Может, его можно где-нибудь раздобыть? Или существуют иные способы?

От

Пытаясь разобраться с проблемой размещения файлов в UWP-приложениях, пришел к необходимости создать в своем коде объект класса ApplicationData. Этот класс описан на соответствующей странице майкрософтовской документации, где в самом начале обозначено следующее:
Namespace: Windows.Storage
Assemblies: Windows.Storage.dll, Windows.dll
Юнита с именем Windows.Storage или Winapi.Windows.Storage я в поставке Delphi не наблюдаю. Неудивительно, что попытки вставить соответствующие идентификаторы в раздел uses ни к чему не ведут. Как в таких случаях поступают? Откуда берут необходимое?

От

Хочу еще раз обратиться к коллективному разуму в надежде все-таки разобраться с тем, как должен быть устроен пакет appx для размещения в Microsoft Store. А именно - как организовать размещение настроек и пользовательских файлов в специально отведенных для этого папках, а не в установочном каталоге, что запрещено.
Вся информация, которую я смог к сегодняшнему дню накопать, размещена на этой странице майкрософтовской документации и сводится к тому, что при инсталляции пакета appx автоматически создается хранилище пользовательских данных из трех папок. Цитирую: one for local files, one for roaming files, and one for temporary files. В общем-то, это удобно - по крайней мере, не нужно заботиться о деинсталляции: ровно эти же папки при удалении программы и сотрутся.
Вопрос в том, как к этому хранилищу обратиться. В идеале, конечно же, хотелось бы иметь возможность уже в Deployment Manager обозначить для некоторых файлов, что они должны быть положены в это хранилище, а не в установочный каталог. Но как это можно сделать и можно ли сделать вообще, мне понять не удалось. Списка констант для параметра Remote Path я найти не смог, а отдельные упоминаемые тут и там константы ("res", "assets", "classes", "library") явно относятся к мобильным платформам, а не к Windows.
Если так поступить нельзя, остается класть всё в установочный каталог, а при первом запуске приложения переносить в нужное место. Но опять же: как приложению заполучить полный адрес этого места? Ведь это вовсе не привычные нам CSIDL_APPDATA и не CSIDL_COMMON_APPDATA, это нечто новое, доселе невиданное, в документации называемое "local app data store". На той же странице есть пример соответствующего кода с использованием класса ApplicationData, но он написан на незнакомом мне C#. Там есть также ссылки на описание класса ApplicationData, но по ссылкам тоже C# и C++. Был бы очень признателен, если бы кто-нибудь показал мне, как заполучить адрес local app data store средствами Delphi.

От

Целый месяц бодаюсь с Microsoft Store, пытаясь разместить у них свое UWP-приложение в виде пакета appx. Получаю отлуп за отлупом. Проблема: приложение должно располагать папкой для пользователя, отличной от установочного каталога, где он мог бы сохранять файлы. Там же должны храниться файлы настроек. Раньше, создавая дистрибутив в InnoSetup, я всегда предусматривал создание такой папки по адресу \AppData\Roaming\MyApp. Теперь всё полагается указывать в разделе Deployment - но как там указать такой адрес? Вроде бы, есть графа "Remote path", и логично существовать каким-то макросам для нее, вроде AppData - но никакой информации на эту тему я найти не смог. Видел лишь упоминания таких макросов, как res, assets, classes, library - однако все они, как я понял, относятся к мобильным платформам.
Попытки обходных маневров не удались. Сначала я решил всё класть в установочный каталог, а при первом запуске создавать нужную папку и перебрасывать в нее несколько файлов. На моем компьютере это работает, но при тестировании в Microsoft Store отчего-то валится (присылают скриншот с сообщением "Access is denied"). То ли нельзя стирать файлы в установочном каталоге, то ли нельзя в таком режиме создавать новый каталог. Потом я прочитал где-то, что UWP-приложениям всё равно, где лежат файлы, они могут их менять даже в установочном каталоге. Попробовал всё валить в одну кучу и так работать. Увы, опять отрапортовали о падении ("The app tries to create a file under WindowsApps folder").
Получается, что все-таки нужно как-то заставить appx-дистрибутив создавать при установке папку по адресу \AppData\Roaming\MyApp. Но как?
Спрашивал на experts-exchange, там знатоков не нашлось. Если и здесь нет, может, кто-нибудь хотя бы подскажет, в каких местах есть смысл спросить?

  • Последние посетители 0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • В Microsoft Word, который построен по принципу WYSIWYG, важно сохранять корректность разметки на любом разрешении. Это значит, что разметка должна быть свободно масштабируемой, и она действительно масштабируема. Но позвольте мне провести небольшое расследование. Ниже приведен текст так, как он выглядит в Microsoft Word из пакета Office 2003. Нет смысла читать этот текст, просто взгляните на него.

    И сравните с тем, как он выглядит в Adobe Acrobat Reader:

    Вы сможете лучше ощутить разницу, если скачаете оба изображения, и будете переключаться между ними в какой-нибудь программе, поддерживающей слайдшоу (я использую приятный и бесплатный IrfanView). Текст в Adobe Acrobat смотрится равномернее, к тому же, он гораздо ближе к тому, что мы видим на принтере. Текст в MS Word смотрится более чётким, но в целом он уродливее. Почему? Из-за кривого кернинга. Выглядит так, будто бы они вообще отказываются от кернинга на низких разрешениях (а 96 DPI это очень мало). Привязка глифов к пикселям в конечном итоге приводит к случайно разбросанным пробелам, которые выглядят просто ужасно. Есть только один способ заставить текст выглядеть лучше - использовать горизонтальное субпиксельное позиционирование. Это физический закон, близко связанный с теоремой Котельникова (в англоязычной литературе - теорема Найквиста - Шеннона или теорема отсчётов), которая гласит:

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

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

    Пьер Арнауд продемонстрировал это ещё более понятным образом :

    Положим, вам нужно вывести глиф для символа «i», который будет шириной точно в 2.4 пикселя. Если вы используете хинтинг, скорее всего, вы получите на выходе изображение шириной в 2 пикселя. Положим, пробел у нас равен четырем пикселям.
    Теперь представьте себе, что вам нужно вывести «iiiiiiiiii» (глиф «i» 10 раз). Это даст нам слово, которое занимает на экране 20 пикселей, но типографская позиция должна сдвинуться на 24 пикселя. Вам придется добавить 4 пикселя к последующему пробелу, фактически удвоив его размер. Это будет смотреться на экране довольно странно. Еще хуже будет, если глиф «i» реально занимает 2.6 пикселя, и хинтер решит растянуть его до 3 пикселей. В этом случае вы займете 30 пикселей на экране, хотя типографская позиция должна была сместиться на 26 пикселей. В этом случае, вы получите ошибку в -4 пикселя, и компенсация этой ошибки полностью съест последующий пробел.

    Другая попытка могла бы заключаться в том, чтобы позиционировать глифы «i», округляя их типографские позиции. В результате применения такого подхода мы получили бы следующие координаты по оси x (в случае с шириной глифа в 2.4 пикселя):

    X = 0 ----> 0 ошибка = 0 ширина = 2 x = 2.4 --> 2 ошибка = -0.4 ширина = 3 x = 4.8 --> 5 ошибка = +0.2 ширина = 2 x = 7.2 --> 7 ошибка = -0.2 ширина = 3 x = 9.6 --> 10 ошибка = +0.4 ширина = 2
    Результат будет ужасен:

    .*.*..*.*..* ............ .*.*..*.*..* .*.*..*.*..* .*.*..*.*..* .*.*..*.*..*
    Вы поняли идею… Интервалы между глифами «i» становятся переменными.


    Да, становятся. Именно это и происходит в Microsoft Word.

    Таким образом, Microsoft не допускает субпиксельное позиционирование, а Adobe допускает. Это значит, что одни и те же глифы на разных позициях могут давать разное фактическое отображение на экране. Это чётко заметно в слове «institutions», помеченном красным прямоугольником в примерах выше.

    Взгляните на Adobe"овские глифы «i», «n», «s», «t». Есть как минимум две разные версии их отображения в разных позициях. Именно поэтому текст у Adobe смотрится более равномерным, но при этом более размытым.

    Теперь, если вы наберете то же самое слово «institutions» в WordPad, результат будет другим (и будет смотреться куда лучше). Так почему же он так плохо выглядит в MS Word? Только из-за визуальной неточности в позиционировании. Функция TextOut(), которая, по-видимому, используется в WordPad, не заботится об этом, но MS Word вынужден (чтобы сохранять корректность разметки при масштабировании, прим. перев. ). Я не уверен на все сто, но могу предположить, что разработчики MS Word расчитывают смещение глифов на высоких разрешениях с нехинтованными глифами. Есть только один способ сделать это, используя документированный Win32 API - вызвать GetGlyphOutline() с очень сильно увеличенной аффинной матрицей таким образом, чтобы получившийся глиф умещался в прямоугольник 1024x1024 или около того. Непосредственное использование этого приема дает точно такой же результат, как и TextOut(). Он смотрится хорошо, но накапливает ощутимую ошибку на протяжении строки текста (больше, чем размер одного символа на протяжении только одного слова!).

    В случае же с диалоговыми окнами, как мне кажется, они решили допустимым не сохранять точную ширину текста. Почему? Потому что иначе подписи, меню, диалоговые окна и тому подобное не выглядели бы так заманчиво. Была бы та же самая проблема со случайно разбросанным кернингом, что явно навредило бы продажам их ПО. Итак, симпатичный и чёткий текст в диалоговых окнах способствует бизнесу, но накапливает значительную неточность в ширине текста, что приводит к невозможности изменения размера диалоговых окон, а это, в свою очередь, вынуждает производителей выпускать мониторы с 96 DPI - в результате мы имеем порочный круг, который в конце концов превратился в большую профанацию.

    С чисто инженерной точки зрения должен быть разумный компромисс между чёткостью текста и функциональностью. Проблема в том, что Microsoft сконцентрировалась на гламурном оформлении, при этом полностью игнорируя функциональную часть. Парадокс: на разрешении в 300 DPI вам вообще не нужен хинтинг, к тому же, текст становится свободно масштабируемым (а при разрешении 600 DPI и выше вам даже не нужно сглаживание), но вы не можете использовать ваше ПО на 300 DPI, потому что оно рассчитано в лучшем случае на 100 DPI! Вот цена, которую весь мир платит за гламурное оформление. Эта цена слишком высока, просто невероятно высока.

    Несмотря на это, ещё 5 (пять!) лет назад было технически возможно иметь свободно масштабируемые формы и диалоговые окна. Все, что нам было нужно - допустить определенную степень размытия, очень незначительную, не настолько высокую, как в Mac OS X. Скорее, как в продукции Adobe. Пользователи Windows не любят Safari за слишком размытый вывод. Я частично согласен с ними, за исключением слепого отрицания любых других способов растеризации, кроме использующегося в Windows. Это просто безрассудный фанатизм. Это всё равно, что сказать «мне плевать на разрешение, пусть Windows выглядит так, как я привык, даже ценой в 96 DPI навсегда, даже если для этого потребуется остановить технический прогресс». Можно ли считать такой взгляд разумным?

    Я не агитирую в пользу Apple, так как от растеризации Apple я тоже не в восторге. На мой взгляд, она действительно выглядит черезмерно размытой. Похоже, они используют что-то вроде алгоритма автохинтинга, который размывает горизонтальные штрихи, но по сути не дает никаких преимуществ. Фактически, их хинтинг тоже выглядит кривым, особенно для шрифтов без засечек, как будто бы они специально сдвинули чёткий текст на 0,2..0,5 пикселя. Именно поэтому пользователи Windows так не любят Safari. Но при этом многие из них с удовольствием используют Adobe Acrobat Reader и остаются довольны. Всё потому, что в нём текст выглядит приемлимо (не идеально, но приемлимо для фанатов Windows). При этом он остается свободно масштабируемым! Попробуйте просто загрузить любой документ и плавно увеличивать-уменьшать его. Разметка текста остается корректной, и при этом кернинг тоже. Так что я бы назвал способ рендеринга Adobe наилучшим, потому что их компромисс выглядит очень близко к оптимальному.

    Субпиксельное позиционирование с помощью ClearType: возможно ли?

    Джеф Этвуд однозначно высказывается в пользу строгой привязки к пиксельной сетке. У меня свое мнение. Я согласен считаться с пиксельной сеткой, но только по оси Y. По X предпочтительнее использовать субпиксельное позиционирование. При этом мы жертвуем резкостью (но совсем незначительно), зато обретаем полную свободу.

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

    Посмотрите внимательно: слово «common», выделенное красным, а также буква «m».

    Видите, три вертикальных штриха «m» отличаются друг от друга! Несмотря на это, в оригинальном тексте они смотрятся вполне чётко и привлекательно. Что это значит? Многое. Это значит, что с ClearType возможно использовать позиционирование с точностью до 1/3 пикселя. В таком случае, зачем они прикрепляют глифы к пикселям?! Этого я не понимаю. Точности в 1/3 пикселя было бы достаточно для точного кернинга и одновременно чёткого текста! Хорошо, если я вас ещё не убедил, продемонстрирую в деталях. Я взял скриншот строки текста из Microsoft Word. Он выглядел так:

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

    А затем я произвел «альфа-смешивание» этой карты в модели цветов RGB, воспринимая каждый цветовой канал как отдельный серый пиксель. Я проделал это 12 раз со смещением в 1 серый пиксель, получая смещение на 1/3 пикселя в RGB. Посмотрите, что получилось:

    Но это же и есть субпиксельное позиционирование! Вы можете легко убедиться в этом: за 12 линий накопились 4 лишних пикселя, при этом чёткость символов не пострадала. Хорошо, строки слегка отличаются, но вам придется очень близко рассматривать их, чтобы это заметить (замечу, у меня зрение - единица, и я не ношу очки). Поверьте мне, это очень низкая цена за свободу точного субпиксельного позиционирования! Так что это работает. Это вполне возможно. Почему вы не используете субпиксельное позиционирование, дорогая Microsoft, ответьте! Ответа нет.


    Кстати, а есть ли субпиксельное позиционирование в Windows Vista? Похоже что нет. Во всяком случае, я не смог найти ни одного примера, где один и тот же глиф растеризовался бы в различные наборы пикселей в разных позициях. Вы видите, они слегка увеличили размер шрифта по умолчанию (для 96 DPI), но, что более заметно, они увеличили межсимвольные интервалы таким образом, чтобы некорректное позиционирование меньше бросалось в глаза. Это хорошо, но как насчет более аккуратных форм символов? Вынужден признать: ситуация с цифровой типографикой не слишком улучшилась после выхода Vista. И вряд ли мы можем расчитывать, что в ближайшее время она изменится.

    Ещё один большой вопрос заключается в названии «Microsoft ClearType Font Collection». Почему они называют её коллекцией шрифтов ClearType? Эта технология жёстко привязана к конкретным шрифтам? Тогда, опять же, эта технология производит впечатление очень узкоспециализированного локального решения, таким образом, она не может быть успешно применена к абсолютно любому шрифту. Ниже я продемонстрирую, как с применением автохинтера FreeType можно получить честный, универсальный и независимый от шрифта способ растеризации. Всё, что вам нужно, это векторные кривые глифов. Больше ничего.

    Способ, которым FontFocus выполняет выравнивание по сетке пикселей

    Джеф, среди всего прочего, ссылается на документацию к FontFocus . При всем уважении, я вынужден не согласиться с ней.


    Они выравнивают штрихи по пикселям, игнорируя при этом вертикальный хинтинг. Вы видите, символы «T», «W», «C» и «g» сильно размыты. Кроме того, «W» выглядит тяжелее остальных.

    На мой взгляд, это выглядит довольно небрежно. Подразумевается, что это Times New Roman. Похоже? Нет, больше похоже на примитивный растровый шрифт. Так в чем же смысл? Не проще ли один раз сохранить шрифт как растровый и использовать на низких разрешениях его? Какой смысл в сглаживании, если мы можем себе позволить искажать форму знаков? Кроме того, похоже что в тексте есть «пятна», будто бы он написан чернилами на мягкой салфетке: большая часть штрихов правильные, но кое-где они смазаны. В любом случае, проблема та же: либо вы отказываетесь от корректной разметки, либо получаете кривой кернинг.

    Здесь я хочу снова упомянуть Safari. Не могу сказать с полной уверенностью, но, похоже, Mac OS тоже не использует субпиксельный кернинг, что в итоге приводит к проблемам, о которых я писал выше, критикуя подход Microsoft. Способ Safari гораздо ближе к получению корректной разметки с сохранением правильного позиционирования знаков, но выглядит это так, будто они тоже жестко привязывают символы к пикселям, и не важно, насколько размытым получается результат. Так в чем же их политика? Специально использовать растеризацию, которая (на низких разрешениях - прим. перев. ) дает весьма размытый текст, только для того, чтобы люди покупали экраны с более высоким разрешением? Нечестная игра!

    Ниже вы увидите, как добиться приятного и корректного отображения текста, и, что самое интересное, в результате весьма простых манипуляций. Я использовал библиотеку FreeType и функцию GetGlyphOutline() из Win32 API. Другими словами, такая схема растеризации возможна как в Windows, так и в Linux, ну и, конечно же, в Mac OS, в которой FreeType тоже прекрасно компилируется. Кроме того, я выяснил, что автохинтер FreeType работает вполне корректно, если использовать его так, как я это делал (в обычных условиях результат его работы нельзя назвать приемлимым). Но для начала я расскажу о ситуации в мире Linux. Добавить метки