Изменение ширины символа пробела в NSTextView
Я пытаюсь сделать приложение для чтения, чтобы помочь девушке с трудностями чтения. Некоторые исследования показывают, что просто изменение цвета текста, фона и тени действительно может помочь детям, поэтому яЯ пытаюсь позволить ей сделать это. Это'просто большой NSTextView с кнопками, чтобы она могла изменять размер шрифта, цвет, цвет фона, свойства тени, межбуквенный интервал, межстрочный интервал и межсловный интервал. Я знаю, что вы можете сделать большую часть этого, просто используя Word, но яя пытаюсь сделать это настолько интуитивным / забавным, насколько это возможно для нее.
Место, где я мог бы использовать руку, заключается в изменении размера промежутка между словами. В настоящее время яm просто ищет строку пробелов, равную количеству пробелов, которые я ожидаю там найти, и затем заменяю их более или менее пробелами следующим образом:
- (IBAction)increaseSpacing:(id)sender{
NSInteger spacing = [[NSUserDefaults standardUserDefaults] integerForKey:@"wordSpacing"];
NSMutableString * oldString = [ NSMutableString stringWithCapacity:0];
NSMutableString * newString =[ NSMutableString stringWithCapacity:0];
for (int i = 0; i < spacing; i+=1) {
[oldString appendString:@" "];
}
[newString setString:oldString];
[newString appendString:@" "];
[[[textView textStorage] mutableString] replaceOccurrencesOfString:oldString
withString:newString options:0
range:NSMakeRange(0, [[textView textStorage] length])];
spacing += 1;
[[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithInteger: spacing] forKey:@"wordSpacing"];
}
- (IBAction)reduceSpacing:(id)sender{
NSInteger spacing = [[NSUserDefaults standardUserDefaults] integerForKey:@"wordSpacing"];
if (spacing > 1) {
NSMutableString * oldString = [ NSMutableString stringWithCapacity:0];
NSMutableString * newString =[ NSMutableString stringWithCapacity:0];
for (int i = 0; i < spacing-1; i+=1) {
[newString appendString:@" "];
}
[oldString setString:newString];
[oldString appendString:@" "];
[[[textView textStorage] mutableString] replaceOccurrencesOfString:oldString
withString:newString options:0
range:NSMakeRange(0, [[textView textStorage] length])];
spacing -= 1;
[[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithInteger: spacing] forKey:@"wordSpacing"];
}
}
Этот подход мне кажется неаккуратным, особенно при перемещении курсора с помощью клавиш со стрелками. Я мог бы просто изменить размер шрифта пробела, когда онs напечатано, но это также изменит высоту строки. Есть ли способ, которым я могу просто изменить ширину символа пробела? Заранее спасибо за помощь.