Текстовые стили с ttf. Некоторые тонкости настройки

Столкнулся я тут как-то с задачей "создать текстовый стиль с ttf-шрифтом, и чтобы там сразу было установлено полужирное начертание".

Не очень длительные эксперименты показали, что меняются только расширенные данные приложения "ACAD", записанные на стиль.

Для гарантии работы пришлось нарисовать отдельную фунцию удаления РД из примитива. Приводить не буду - там в принципе ничего сложного нет (если надо, отпишитесь в комментариях, сделаю).

А вот и само изменение начертания для ttf. Примем, что res - vla-указатель на обрабатываемый стиль, а lst - список параметров.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(vla-setxdata
        res
        (vlax-safearray-fill
          (vlax-make-safearray
            vlax-vbinteger
            '(0 . 2)
            ) ;_ end of vlax-make-safearray
          '(1001 1000 1071)
          ) ;_ end of vlax-safearray-fill
        (vlax-safearray-fill
          (vlax-make-safearray
            vlax-vbvariant
            '(0 . 2)
            ) ;_ end of vlax-make-safearray
          (list "ACAD"
                (vl-filename-base (cdr (assoc "fontfile" lst)))
                (cond
                  ((and (cdr (assoc "bold" lst)) (cdr (assoc "italic" lst))) 50331682)
                  ((cdr (assoc "bold" lst)) 33554466)
                  ((cdr (assoc "italic" lst)) 16777250)
                  (t 34)
                  ) ;_ end of cond
                ) ;_ end of list
          ) ;_ end of vlax-safearray-fill
        )

Естественно, что выполнять подобные шаги для стилей, в которых используются shx-шрифты, по меньшей мере бесполезно. :) А так все просто :)

Размещено в Код LISP · Метки: , ,



Поделитесь своим мнением


Я не робот.