Я должен установить размер текста (например, к 42) выбранного обогащенного текста, который использует несколько шрифтов.
Я предполагаю, что могу проверить атрибуты каждой группы символов, изменить размер шрифта и задержать атрибуты, но рассмотрение плавающей панели Font, на которую это походит, должно быть очень легким и простым способом выполнить это. Я пропускаю что-то очевидное?
Примечание : я предполагаю, что вы используете NSTextView и можете получить доступ к его текстовому хранилищу (NSTextStorage).
Я думаю, что невозможно изменить размер шрифта только для текста, в котором используется несколько шрифтов. В NSAttributedString размер шрифта является частью атрибута NSFontAttributeName, который управляет как шрифтом, так и размером.
Одно из решений - перебрать выделение и использовать атрибут : atIndex: longestEffectiveRange: inRange:
для захвата диапазона при применении каждого шрифта, изменить размер шрифта и затем использовать атрибут addAttribute: value: range:
, чтобы установить новый шрифт в диапазоне.
Обновление :
Если вы посмотрите исходный код GNUstep GUI для NSTextView (в LGPL), вы увидите, что их реализация использует итерацию диапазона.
Поскольку NSTextView
является подклассом NSView
, вы можете использовать -scaleUnitSquareToSize:
для изменения уровня увеличения. текстового представления. Например, чтобы увеличить размер всего текста вдвое, вы должны вызвать:
[textView scaleUnitSquareToSize:NSMakeSize(2.0, 2.0)];
Возможно, вам потребуется внести некоторые изменения в размеры NSTextContainer
текстового представления после выполнения этой операции, чтобы текст был размещен. правильно.