Я пытаюсь нарисовать глиф поверх другого глифа, который служит фоном, нижние / более глубокие символы глифа немного полнее, чем самые верхние глифы.
Эти фоновые глифы обычно отображаются белым и служат в качестве маски, чтобы скрыть фоновые линии, которые в противном случае могли бы врезаться в текст.
По какой-то причине, поскольку IOS 10 самые верхние глифы теперь нечеткие.
Есть ли какие-то новые настройка для предотвращения этого?
Изображения ниже:
- Без фона Глиф
- С фоновым глифом (раньше работал IOS 10)
- Фоновый глиф красного цвета 4 Глиф с вторгающейся линией для маскировки
![none](https://i.stack.imgur.com/kctln.png)
![With background Glyph](https://i.stack.imgur.com/kMUDG.png)
![Background shown in red](https://i.stack.imgur.com/qDXIP.png)
![enter image description here](https://i.stack.imgur.com/uJJb1.png)
func drawLabelGlyph(label:String, placement:CGPoint, size:CGFloat, width:CGFloat, horizontalOffset:CGFloat, fontColor:UIColor){
let paragraphStyle = NSMutableParagraphStyle() //20 size
paragraphStyle.alignment = .center
let attrs = [
NSAttributedString.Key.font: UIFont(name: ThemeManager.currentTheme().fontChart, size: size)!,
//NSFontAttributeName: UIFont.systemFont(ofSize: 12.0),
NSAttributedString.Key.paragraphStyle: paragraphStyle,
//NSBackgroundColorAttributeName : _labelForegroundBack,
NSAttributedString.Key.foregroundColor: fontColor
]
let resizeFactor = CGFloat(0.2)
let height = size * (1 + resizeFactor)//1.2 //20 > 24
let vertOffSet:CGFloat = -1 * (size / 2 + size * resizeFactor)
let horizOffSet:CGFloat = width / -2 // -10
label.draw(
with: CGRect(x: (placement.x + horizOffSet), y: (placement.y + vertOffSet), width: width, height: height),
options: .usesLineFragmentOrigin,
attributes: attrs,
context: nil)
}
func drawLabelGlyph(label:String, placement:CGPoint, size:CGFloat, width:CGFloat, horizontalOffset:CGFloat){
var fontColor = _fontColor
drawLabelGlyph(label:label, placement:placement, size:size, width:width, horizontalOffset:horizontalOffset, fontColor:fontColor)
}
func drawLabelGlyphBK(label:String, placement:CGPoint, size:CGFloat, width:CGFloat, horizontalOffset:CGFloat){
let paragraphStyle = NSMutableParagraphStyle() //20 size
paragraphStyle.alignment = .center
let attrs = [
//NSFontAttributeName: UIFont(name: ThemeManager.currentTheme().fontChart, size: size)!, //Background
NSAttributedString.Key.font: UIFont(name: ThemeManager.currentTheme().fontChartBackground, size: size)!, //Background
NSAttributedString.Key.paragraphStyle: paragraphStyle,
NSAttributedString.Key.backgroundColor : _labelBackgroundBack,
NSAttributedString.Key.foregroundColor : _labelBackgroundFore
]
let resizeFactor = CGFloat(0.2)
let height = size * (1 + resizeFactor)//1.2 //20 > 24
let vertOffSet:CGFloat = -1 * (size / 2 + size * resizeFactor)
let horizOffSet:CGFloat = width / -2 // -10
label.draw(
with: CGRect(x: (placement.x + horizOffSet), y: (placement.y + vertOffSet), width: width, height: height),
options: .usesLineFragmentOrigin,
attributes: attrs,
context: nil)
}