Шрифт:
Свойство
lineCap
определяет, как будут выглядеть концы незамкнутых фрагментов контуров. Значение «butt» (по умолчанию) соответствует завершению линий непосредственно в конечной точке. При значении «square» линия будет продолжена за конечную точку на половину толщины и будет иметь квадратный конец. А при значении «round» линия будет продолжена за конечную точку на половину толщины и будет иметь закругленный конец (с радиусом закругления в половину толщины линии). Свойство
lineJoin
определяет внешний вид вершин, соединяющих фрагменты контура. По умолчанию это свойство имеет значение «miter», при котором внешние края линий двух фрагментов контура будут продолжены, пока они не встретятся. При значении «round» вершины получают закругленную форму, а при значении «bevel» вершины обрезаются прямыми линиями. Последнее свойство, связанное с рисованием линий, - это свойство
miterLimit
, которое используется, только когда свойство lineJoin
имеет значение «miter». Когда две линии соединяются под острым углом, сопряжение между ними может оказаться довольно протяженным, и эти протяженные сопряжения могут нарушать визуальную гармонию. Свойство miterLimit
определяет верхнюю границу протяженности сопряжений. Если сопряжение в некоторой вершине оказывается длиннее половины длины линии, умноженной на значение miterLimit
, эта вершина будет нарисована с обрезанным сопряжением. 21.4.9. Текст
Для рисования текста в холсте обычно используется метод
fillText
, который рисует текст, используя цвет (градиент или шаблон), определяемый свойством fillStyle
. Если необходимо использовать специальные эффекты при выводе текста крупными символами, для рисования контуров отдельных символов можно применить метод strokeText
(пример вывода контуров символов приводится на рис. 21.13). Оба метода принимают в первом аргументе текст, который требуется нарисовать, и координаты X и Y вывода текста во втором и третьем аргументах. Ни один из этих методов не вносит изменений в текущий контур и не смещает текущую точку. Как видно на рис. 21.7, при выводе текста учитывается текущее преобразование системы координат. Свойство
font
определяет шрифт, который будет использоваться для рисования текста. Значение этого свойства должно быть строкой с соблюдением синтаксиса CSS-атрибута font
. Например:
"48pt sans-serif”
"bold 18рх Times Roman"
"italic 12pt monospaced"
"bolder smaller serif" // жирнее и меньше, чем шрифт элемента <canvas>
Свойство
textAlign
определяет способ выравнивания текста по горизонтали с учетом координаты X, переданной методу fillText
или strokeText.
Свойство textBaseline
определяет способ выравнивания текста по вертикали с учетом координаты Y. На рис. 21.12 показано действие всех допустимых значений этих свойств. Тонкая линия рядом с каждой строкой текста - это опорная линия шрифта, а маленький квадратик обозначает точку (х.у), координаты которой были переданы методу fillText.
По умолчанию свойство
textAlign
имеет значение «start». Обратите внимание, что для текста, который записывается слева направо, выравнивание, определяемое значением «start», совпадает с выравниванием, определяемым значением «left», аналогично совпадает и действие значений «end» «right». Однако если в элементе
<canvas>
определить атрибут dir
со значением «rtl» (right-to-left - справа налево), действие значения «start» выравнивания будет совпадать с действием значения «right», а действие значения «end» - с действием значения «left».
Свойство
textBaseline
по умолчанию имеет значение «alphabetic», которое соответствует алфавиту Latin и подобным ему. Значение «ideographic» используется совместно с идеографическими алфавитами, такими как китайский и японский. Значение «hanging» предназначено для использования со слоговыми и подобными им алфавитами (которые используются во многих языках в Индии). Значения «top», «middle» и «bottom» определяют исключительно геометрическое положение опорной линии шрифта, исходя из размеров «кегельной площадки» шрифта. Методы
fillText
и strokeText
принимают четвертый необязательный аргумент. Этот аргумент определяет максимальную ширину отображаемого текста. Если текст окажется шире указанного значения, при заданном значении свойства font
будет выполнено его масштабирование или будет использован более узкий или более мелкий шрифт. Если вам потребуется узнать размеры текста до его вывода, передайте его методу
measureText.
Этот метод возвращает объект TextMetrics
, определяющий размеры для текущего значения свойства font
. На момент написания этих строк объект TextMetrics
позволял определить только ширину текста. Определить ширину текстовой строки на экране можно следующим образом: