Ответ 1
Это связано с тем, что знак значения для NSStrokeWidthAttributeName интерпретируется как режим; он указывает, относится ли связанная строка должно быть заполнено, поглажено или и то, и другое. В частности, отображается нулевое значение только заполнение, в то время как положительное значение отображает только штрих. Отрицательный значение позволяет отображать как заливку, так и ход.
Итак, с вашей настройкой
NSStrokeWidthAttributeName: 1.0
шрифт только поглаживается и не заполняется, в результате получается "контурный шрифт". Вы хотите установить
NSStrokeWidthAttributeName: -1.0
чтобы шрифт был поглажен и заполнен.
Вы также можете найти эту информацию, если вы нажмете команду
NSStrokeWidthAttributeName
в Xcode, чтобы перейти к определению:
NSNumber, содержащий значение с плавающей запятой, в процентах от точки шрифта размер, по умолчанию 0: без штриха; положительный только для инсульта, отрицательный для ход и заливка (типичное значение для выделенного текста будет 3,0)