Merge branch 'main' of github.com:Kinneyzhang/emacs-kp

This commit is contained in:
Kinneyzhang 2025-08-09 19:30:12 +08:00
commit 3df885bef8
4 changed files with 11 additions and 10 deletions

10
ekp.el
View File

@ -546,7 +546,8 @@ return the value of KEY in plist."
"Line glues include glues before first box and after last box.
So the length of line glues is: line-boxes-num + 1"
(let* ((boxes-widths (ekp-boxes-widths string))
(boxes-num (length (ekp-boxes string)))
(boxes (ekp-boxes string))
(boxes-num (length boxes))
(glues-types (ekp-glues-types string))
(ideal-prefixs (ekp-ideal-prefixs string))
(max-prefixs (ekp-max-prefixs string))
@ -564,7 +565,12 @@ So the length of line glues is: line-boxes-num + 1"
(setq line-glue
(cond
((= 1 (length line-boxes-widths))
(list 0 (- line-pixel (aref line-boxes-widths 0))))
(if (ekp-hyphenate-p glues-types end)
;; ends with hyphen, minus hyphen-pixel
(list 0 (- line-pixel
(ekp-hyphen-pixel string)
(aref line-boxes-widths 0)))
(list 0 (- line-pixel (aref line-boxes-widths 0)))))
(is-last
(append '(0)
(mapcar #'ekp-glue-ideal-pixel line-glues-types)

View File

@ -56,6 +56,7 @@ Formats the text STRING to fit a pixel width of LINE-PIXEL per line and returns
Searches for optimal typesetting within the range of MIN-PIXEL to MAX-PIXEL. Returns a cons-cell where the car is the formatted text and the cdr is the pixel value achieving the best typesetting result. Please Note: This function iteratively computes the typesetting cost between the minimum and maximum pixel values to find the optimal case at the minimum cost. If the specified range is too large, execution time may increase significantly. Future updates plan to leverage Rust dynamic libraries for parallel computation to improve performance.
## Next Todos
- [ ] Preserve the original text's text properties.
- [ ] Refactor using Rust dynamic modules: Utilize Rust's parallel computing capabilities to enhance rendering performance.
- [ ] Implement autocorrection for punctuation: Correct English punctuation mistakenly used in Chinese text; Correct Chinese punctuation mistakenly used in English texts...

View File

@ -50,7 +50,7 @@
;; (ekp-test-justify nil "fr" "Cascadia Next SC" 666)
;; (ekp-test-justify nil "de_DE" "Cascadia Next SC" 666)
;; (ekp-test-justify "zh" "en_US" "Noto Serif" 689)
;; (ekp-test-justify "zh" nil nil 250)
;; (ekp-test-justify "zh" nil nil 980)
;;; FIXME: font size also affect!
@ -78,9 +78,3 @@
(sit-for 0.00001))))))
;; (ekp-test-demo 400 800 1)
;; (ekp-clear-caches)
;; (ekp-test-justify "zh2" "en_US" "Cascadia Next SC" 666)
;; (ekp-boxes (ekp-test-str "zh2" "en_US" "Cascadia Next SC"))
;; (ekp-split-to-boxes "用户可通过Emacs Lisp (elisp) 重新定义编辑行为")
;; (ekp-split-to-boxes "用户可通过Emacs Lisp (elisp) 重新定义编辑行为")