Как изменить только размер шрифта для целого стилизованного текста в NSTextView

Я должен установить размер текста (например, к 42) выбранного обогащенного текста, который использует несколько шрифтов.

Я предполагаю, что могу проверить атрибуты каждой группы символов, изменить размер шрифта и задержать атрибуты, но рассмотрение плавающей панели Font, на которую это походит, должно быть очень легким и простым способом выполнить это. Я пропускаю что-то очевидное?

11
задан Indoor 11 February 2010 в 15:05
поделиться

2 ответа

Примечание : я предполагаю, что вы используете NSTextView и можете получить доступ к его текстовому хранилищу (NSTextStorage).

Я думаю, что невозможно изменить размер шрифта только для текста, в котором используется несколько шрифтов. В NSAttributedString размер шрифта является частью атрибута NSFontAttributeName, который управляет как шрифтом, так и размером.

Одно из решений - перебрать выделение и использовать атрибут : atIndex: longestEffectiveRange: inRange: для захвата диапазона при применении каждого шрифта, изменить размер шрифта и затем использовать атрибут addAttribute: value: range: , чтобы установить новый шрифт в диапазоне.

Обновление :

Если вы посмотрите исходный код GNUstep GUI для NSTextView (в LGPL), вы увидите, что их реализация использует итерацию диапазона.

2
ответ дан 3 December 2019 в 03:52
поделиться

Поскольку NSTextView является подклассом NSView , вы можете использовать -scaleUnitSquareToSize: для изменения уровня увеличения. текстового представления. Например, чтобы увеличить размер всего текста вдвое, вы должны вызвать:

[textView scaleUnitSquareToSize:NSMakeSize(2.0, 2.0)];

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

1
ответ дан 3 December 2019 в 03:52
поделиться