wake-up-neo.com

Wie kann ich die Schriftglättung in Xcode 9 deaktivieren?

Ich habe eine großartige Programmiersprache Deccy , die nur gut aussieht, wenn die Schriftglättung (Anti-Aliasing) in Xcode deaktiviert ist. Mit Xcode 8 wäre folgendes möglich:

defaults write com.Apple.dt.Xcode NSFontDefaultScreenFontSubstitutionEnabled -bool YES
defaults write com.Apple.dt.Xcode AppleAntiAliasingThreshold 24

Dies funktioniert jedoch nicht mehr mit Xcode 9.

Ist es möglich, die Schriftglättung in Xcode 9 zu deaktivieren?

34
Desmond Hume

Шалость удалась?

Zum Bewerten von Xcode 9 in Deccy in 13pt:

The text appears crisp, with no blurred edges.

Я считаю, что выше, что вы хотите. Zum Vergrößern des Xcode, Zum Vergrößern des Fotos hier klicken:

Though the font was designed with crisp pixel boundaries, it appears here, blurred, as if seen through the haze of one too many hours programming.

Nicht wahr?

Я глубоко прощупал неинвазивный способ сделать это и потерпел неудачу. In Xcode 9 wurde eine Nachricht an den Spieler gesendet.

Прежде чем идти дальше, отправьте запрос на функцию in Apple. Это займет всего несколько минут, и это ваша лучшая надежда на ответ, который можно обсудить перед теми, у кого здоровые инстинкты безопасности и напряженная сердечно-сосудистая система:

https://bugreport.Apple.com/

Я написал плагин Xcode. Wenn Sie einen Artikel von Xcode 9 suchen, wird dieser Artikel von Google in Ihrem Browser angezeigt. Bei Auswahl von, ohne Angabe von oder ohne Angabe von.

Первый шаг

Существует инструмент pdate_xcode_plugins . XCode, XCode-Code, XCode-Code, XCode-Code, XCode-Code, XCode-Code, XCode-Code, XCode-Code, XCode-Code, XCode-Code, XCode-Code, XCode-Code, XCode-Code, XCode-Code, XCode-Code, XCode-Code

$ gem install update_xcode_plugins
$ update_xcode_plugins --unsign

Если вы передумаете, вы можетесделать это, чтобы вернуться к (резервной копии, я думаю?) Подо

$ update_xcode_plugins --restore

Шаг второй

Есть еще один инструмент, Alcatraz . Это менеджер плагинов для Xcode. Я решил установить его, потому что он предоставляет плагин, который предоставляет шаблон проекта. Я следовал эти инструкции чтобы установить Alcatraz, который сводится к следующему:

$ git clone https://github.com/alcatraz/Alcatraz.git
$ cd Alcatraz
$ xcodebuild

Я запустил Xcode, щелкнул через диалоговое окно, предупреждающее меня о новом плагине, а затем использовал недавно добавленное Fenster> Package Manager для установки шаблона "Xcode Plugin".

Шаг третий

Я сделал проект с этим шаблоном.

Du kannst das "Xcode Plugin" von Xcode 9 kostenlos herunterladen. Я запустил эту команду, чтобы получить UUID совместимости Xcode 9:

$ defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID

Я посетил Info.plist моего нового проекта и добавил этот UUID в массив DVTPlugInCompatibilityUUIDs.

Затем я связал SourceEditor.framework в свой проект. :То был двухэтапный процесс:

  1. Посетите настройки сборки цели. Weitere Informationen zu Framework-Suchpfaden:

    /Applications/Xcode.app/Contents/SharedFrameworks/
    
  2. Посетите этапы сборки цели. Добавьте новый этап "Связать двоичные файлы с библиотеками". Хит плюс. Перейдите в каталог выше (вы можете просто нажать/и затем вставьте путь в) и выберите SourceEditor.framework. Должен появиться в списке. Проект еще надо строить.

Затем я сделал файл .mm моего плагина следующим образом (я удалил файл .h, он не нужен гд__)

#import <AppKit/AppKit.h>
#include <dlfcn.h>

extern void CGContextSetAllowsFontAntialiasing(CGContextRef, BOOL);

static void hooked_sourceEditorSetFontSmoothingStyle(CGContextRef ctx) {
    CGContextSetAllowsFontAntialiasing(ctx, NO);
}

@interface NoAA : NSObject
@end

@implementation NoAA

+ (void)pluginDidLoad:(NSBundle *)plugin
{
    NSArray *allowedLoaders = [plugin objectForInfoDictionaryKey:@"me.delisa.XcodePluginBase.AllowedLoaders"];
    if (![allowedLoaders containsObject:[[NSBundle mainBundle] bundleIdentifier]])
        return;

    Class cls = NSClassFromString(@"SourceEditorScrollView");
    NSBundle* bundle = [NSBundle bundleForClass:cls];
    void *handle = dlopen(bundle.executablePath.fileSystemRepresentation, RTLD_NOW);
    if (!handle)
        return;
    uint8_t* set_font_smoothing_fn = dlsym(handle, "sourceEditorSetFontSmoothingStyle");
    if (!set_font_smoothing_fn)
        goto fin;
    void* set_font_smoothing_fn_page = (void*)((long)set_font_smoothing_fn & -PAGE_SIZE);
    if (mprotect(set_font_smoothing_fn_page, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC))
        goto fin;
    set_font_smoothing_fn[0] = 0xe9; // jmp
    uint32_t* jmp_arg = (uint32_t*)(set_font_smoothing_fn + 1);
    *jmp_arg = (uint32_t)((long)hooked_sourceEditorSetFontSmoothingStyle - (long)(jmp_arg + 1));
    mprotect(set_font_smoothing_fn_page, PAGE_SIZE, PROT_READ | PROT_EXEC);

fin:
    dlclose(handle);
}

@end

... Я думаю, что gotos добавить символ. По сути, он просто определяет функцию, которая принимает CGContextRef и отключает сглаживаниет текста. Затем он перезаписывает начало функции внутри среды SourceEditor, которая обычно настраивает параметры сглаживания - больше не нужно - чтобы перейти к нашей функции. Bei der Suche nach einem Artikel im Xcode-Format ist ein Fehler aufgetreten.

Создайте и запустите проект, который автоматически устанавливает плагин. Примите дополнение вашего плагина, и это все.

?То теперь?

Es wurde ein Fehler gefunden, der den Fehler beseitigt und den Fehler beseitigt hat. Я не планирую сам добавить это в плагин Alcatraz, но вы или кто-либо другой должны сделать это с помощью кредита (после подачи запроса на добавление функций в Apfel).

Удачного взлома!

5
s4y

Wenn Sie in XCode "live" sind und eine scharfe Darstellung dieser TrueType-Schriftart benötigen, hat das Bearbeiten der XCode-Anwendung mit PrefEdit.app oder defaults write com.Apple.dt.Xcode.* keine Auswirkungen.

 Default rendering

Wenn Sie über den Tellerrand hinaus denken, könnten Sie an folgenden Themen interessiert sein, um überall auf Ihrem Mac eine knackige Wirkung zu erzielen.

Da die Deccy-Schrift am besten bei 12 pt angezeigt wird, ist es sinnvoll, AppleAntiAliasingThreshold in der globalen Domäne auf 13 zu erhöhen. Die Standardeinstellung für diese Einstellung ist 4.
Sie können auch kein AppleFontSmoothing vorschlagen.

defaults write -g AppleFontSmoothing -int 0 defaults write -g AppleAntiAliasingThreshold -int 13

Zusätzlich zu diesen Verbesserungen kann im Bereich Accessibility Preference in den Systemeinstellungen ein wenig mehr erreicht werden: Auf dem Display sind zwei Markierungen, die Sie ausprobieren sollten: 'Differenzieren ohne Farbe' und 'Kontrast erhöhen '.

 contrast rendering

"Schönheit liegt im Auge des Betrachters", Ich hoffe, das hilft.

3
bbaassssiiee

Hier sind alternative Schritte, die für Sie funktionieren könnten.

  1. Versuchen Sie, die Datei com.Apple.dt.Xcode.plist unter Macintosh HD/Library/Preferences zu finden.
  2. Kopieren Sie die Datei auf den Desktop
  3. Öffnen Sie die Datei und fügen Sie NSFontDefaultScreenFontSubstitutionEnabled zu (Boolean) YES hinzu
  4. fügen Sie AppleAntiAliasingThreshold zu (Number) 24 hinzu
  5. Ersetzen Sie diese Datei durch die Voreinstellungsdatei
  6. Starten Sie das System und den Xcode neu

Hinweis: Bewahren Sie eine Sicherungskopie der Originaldatei auf.

0
Nishant Bhindi