web-dev-qa-db-fra.com

Comment désactiver le lissage des polices dans Xcode 9?

J'ai une excellente police de programmation Deccy qui n'a de sens que si le lissage des polices (anti-aliasing) est désactivé dans Xcode. Avec Xcode 8, ce qui suit ferait l'affaire:

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

Mais cela ne fonctionne plus avec Xcode 9.

Serait-il possible de désactiver le lissage des polices dans Xcode 9?

34
Desmond Hume

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

Dans le catalogue Xcode 9 par Deccy sur 13pt:

The text appears crisp, with no blurred edges.

Считаю, что выше, что вы хотите. Cliquez ici pour afficher le code-barres Xcode, cliquez sur le lien suivant:

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.

Но как?

Глубоко прощупал неинвазивный способ сделать то и потерпел неудачу. Tous les pays Xcode 9, Xcode 9, Xcode 9, Xcode 9, Xcode 9, Xcode 9, Xcode 9.

Прежде чем идти дальше, il y a environ 2 mois. Это займет всего несколько минут, и это ваша лучшая надежда на ответ, который можно обсудить перед теми, у кого здоровые инстинкты безопасности и напряженная сердечно-сосудистая система:

https: //bugreport.Apple.com/

Написал плагин Xcode. Tous les noms de domaine, code Xcode 9, tous les symboles de code à barres, code à barres, code à barres À la une, à la nuit, à la nuit, à la nuit.

Первый шаг

Суествует инструмент pdate_xcode_plugins . Вы можете использовать его для удаления подписи кода изаления копии XCode, и вместе

$ gem install update_xcode_plugins
$ update_xcode_plugins --unsign

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

$ update_xcode_plugins --restore

Аг второй

Сть еще один инструмент, Alcatraz . Cliquez ici pour afficher le code Xcode. Решил установить его, потому что он предоставляет плагин, который предоставляет шаклон Следовал эти инструкции

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

Я Xcode, щелкнул через диалоговое окно, предупреждающее меня о новом плагине, а затем использовал недавно добавленное Fenêtre> Gestionnaire de paquets для установки шаблона "Xcode Plugin".

Аг третий

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

Cliquez ici pour afficher le "Plugin Xcode" dans Xcode 9. Cliquez ici pour afficher le code. Xcode 9. Cliquez ici pour afficher le code. Xcode 9. Cliquez ici pour afficher le code. Cliquez ici pour afficher votre code Ucode: Xcode 9:

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

En savoir plus Info.plist dans la liste de paramètres et plus de UUID dans la liste DVTPlugInCompatibilityUUIDs.

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

  1. Посетите настройки сборки цели. Dans la liste des chemins de recherche du framework:

    /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

... plus d´info gotos добавить символ. По сути, он просто определяет функцию, которая принимает CGContextRef et les autres produits, par exemple Затем он перезаписывает начало функции внутри среды SourceEditor, которая обычно настраивает параметры сглаживания - больше не нужно - чтобы перейти к нашей функции. Он делает все это невероятно небезопасным образом, поэтому, елленте образом, пойтому.

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

То теперь?

Сли что-то здесь не работает, il y a un mois Я не планирую сам добавить это в плагин Alcatraz, но вы или кто-либо другой должны сделать это с помощью кредита (после подачи запроса на добавление функций в Apple).

Дачного взлома!

5
s4y

Si vous "vivez" dans XCode et avez besoin d'un rendu net de cette police TrueType, la modification des paramètres par défaut de l'application XCode avec PrefEdit.app , ou defaults write com.Apple.dt.Xcode.* n'a aucun effet.

 Default rendering

En dehors des sentiers battus, les éléments suivants pourraient vous intéresser pour que votre Mac soit parfaitement crispyness.

Étant donné que la police Deccy est optimisée à 12 points, il est judicieux d’élever le AppleAntiAliasingThreshold dans le domaine global à 13, la valeur par défaut de ce paramètre est 4.
Vous pouvez également suggérer pas AppleFontSmoothing.

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

En plus de ces ajustements, vous pouvez obtenir un peu plus de temps dans le volet Préférences d’accessibilité des Préférences Système: L’affichage comporte 2 cases à cocher que vous devriez essayer: 'Différencier sans couleur' et ' Augmenter le contraste'.

 contrast rendering

"La beauté est dans l'oeil du spectateur", j'espère que cela aide.

3
bbaassssiiee

Voici des étapes alternatives qui pourraient fonctionner pour vous.

  1. Essayez de trouver le fichier com.Apple.dt.Xcode.plist sous Macintosh HD/Library/Preferences.
  2. Copier le fichier sur le bureau
  3. Ouvrez le fichier et ajoutez NSFontDefaultScreenFontSubstitutionEnabled à (Boolean) YES
  4. ajouter AppleAntiAliasingThreshold à (Nombre) 24
  5. Remplacer ce fichier par un fichier de préférence
  6. Redémarrez le système et Xcode

Remarque: Pour plus de sécurité, conservez la sauvegarde du fichier d'origine.

0
Nishant Bhindi