ours: наш оверлей к апстриму 1.5.1 (дельта для переноса в 1.6.0)
10 изменённых файлов + 2 новых (engineering/gost_titleblock.py, _fonts/isocpeur.ttf). Ветка-донор для трёхстороннего переноса в ours-1.6.
This commit is contained in:
@@ -4,6 +4,32 @@ from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
|
||||
#: Инлайн-группа шрифта ГОСТ — ровно та, что стоит в каждом многострочном тексте
|
||||
#: образца Павла (``{\fISOCPEUR|b0|i0|c204|p34;\Q0;Вентиляционный канал}``):
|
||||
#: ``c204`` — кириллический набор, ``p34`` — плотность 3/4, ``\Q0`` — прямой
|
||||
#: наклон. Шрифт назван внутри самой строки, поэтому надпись выглядит одинаково
|
||||
#: на любом компьютере, даже если стиль чертежа подменят или SHX не найдётся.
|
||||
INLINE_FONT_CODE = r"{\fISOCPEUR|b0|i0|c204|p34;\Q0;"
|
||||
INLINE_FONT_FACE = "ISOCPEUR"
|
||||
|
||||
#: Признаки того, что содержимое уже размечено управляющими кодами MTEXT.
|
||||
_INLINE_MARKUP_CHARS = ("\\", "{", "}")
|
||||
|
||||
|
||||
def wrap_inline_font(text: str, inline_font: bool = True) -> str:
|
||||
"""Завернуть содержимое многострочного текста в инлайн-группу ISOCPEUR.
|
||||
|
||||
Уже размеченный текст (обратные слэши, группы в фигурных скобках) не
|
||||
трогаем и пишем как есть: вложенная группа ломает разбор MTEXT, а образец
|
||||
показывает, что готовые коды переносятся в файл без переписывания.
|
||||
"""
|
||||
if not inline_font:
|
||||
return str(text)
|
||||
raw = str(text)
|
||||
if any(char in raw for char in _INLINE_MARKUP_CHARS):
|
||||
return raw
|
||||
return f"{INLINE_FONT_CODE}{raw}}}"
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class TableLayout:
|
||||
|
||||
Reference in New Issue
Block a user