Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Package.swift
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
// swift-tools-version: 5.6
// swift-tools-version: 5.7
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
name: "CodeEditTextView",
platforms: [.macOS(.v12)],
platforms: [.macOS(.v13)],
products: [
.library(
name: "CodeEditTextView",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,9 +130,9 @@ public class STTextViewController: NSViewController, STTextViewDelegate, ThemeAt
rulerView.textColor = .secondaryLabelColor
rulerView.drawSeparator = false
rulerView.baselineOffset = baselineOffset
rulerView.font = NSFont.monospacedDigitSystemFont(ofSize: 9.5, weight: .regular)
rulerView.font = rulerFont
rulerView.selectedLineHighlightColor = theme.lineHighlight
rulerView.rulerInsets = STRulerInsets(leading: 20, trailing: 8)
rulerView.rulerInsets = STRulerInsets(leading: rulerFont.pointSize * 1.6, trailing: 8)

if self.isEditable == false {
rulerView.selectedLineTextColor = nil
Expand Down Expand Up @@ -255,6 +255,8 @@ public class STTextViewController: NSViewController, STTextViewDelegate, ThemeAt
rulerView?.selectedLineHighlightColor = theme.lineHighlight
rulerView?.baselineOffset = baselineOffset
rulerView.highlightSelectedLine = isEditable
rulerView?.rulerInsets = STRulerInsets(leading: rulerFont.pointSize * 1.6, trailing: 8)
rulerView?.font = rulerFont

if let scrollView = view as? NSScrollView {
scrollView.drawsBackground = useThemeBackground
Expand Down
42 changes: 42 additions & 0 deletions Sources/CodeEditTextView/Extensions/NSFont+RulerFont.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
//
// NSFont+RulerFont.swift
//
//
// Created by Elias Wahl on 17.03.23.
//

import Foundation
import AppKit

extension STTextViewController {
var rulerFont: NSFont {
let fontSize: Double = (font.pointSize - 1) + 0.25
let fontAdvance: Double = font.pointSize * 0.49 + 0.1
let fontWeight = NSFont.Weight(rawValue: font.pointSize * 0.00001 + 0.0001)
let fontWidth = NSFont.Width(rawValue: -0.13)

let font = NSFont.systemFont(ofSize: fontSize, weight: fontWeight, width: fontWidth)

/// Set the open four
let alt4: [NSFontDescriptor.FeatureKey: Int] = [
.selectorIdentifier: kStylisticAltOneOnSelector,
.typeIdentifier: kStylisticAlternativesType
]

/// Set alternate styling four 6 and 9
Comment thread
Eliulm marked this conversation as resolved.
Outdated
let alt6and9: [NSFontDescriptor.FeatureKey: Int] = [
.selectorIdentifier: kStylisticAltTwoOnSelector,
.typeIdentifier: kStylisticAlternativesType
]

/// Make all digits monospaced
let monoSpaceDigits: [NSFontDescriptor.FeatureKey: Int] = [
.selectorIdentifier: 0,
.typeIdentifier: kNumberSpacingType
]

let features = [alt4, alt6and9, monoSpaceDigits]
let descriptor = font.fontDescriptor.addingAttributes([.featureSettings: features, .fixedAdvance: fontAdvance])
return NSFont(descriptor: descriptor, size: 0) ?? font
}
}