Skip to content

Commit

Permalink
🎨 #13241
Browse files Browse the repository at this point in the history
  • Loading branch information
Vanessa219 committed Dec 18, 2024
1 parent d5dfa24 commit 25a0e85
Show file tree
Hide file tree
Showing 5 changed files with 108 additions and 27 deletions.
12 changes: 6 additions & 6 deletions app/appearance/themes/daylight/theme.css
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@
--b3-theme-on-error: #fff;

/* 字体 */
--b3-font-family: "Apple Additional Emojis", "Emojis Reset", BlinkMacSystemFont, Helvetica, "Luxi Sans", "DejaVu Sans", "Hiragino Sans", arial, sans-serif, emojis;
--b3-font-family: "Emojis Additional", "Emojis Reset", BlinkMacSystemFont, Helvetica, "Luxi Sans", "DejaVu Sans", "Hiragino Sans", arial, sans-serif, emojis;
--b3-font-family-protyle: var(--b3-font-family);
--b3-font-family-code: "Apple Additional Emojis", "Emojis Reset", "JetBrainsMono-Regular", mononoki, Consolas, "Liberation Mono", Menlo, Courier, monospace, var(--b3-font-family);
--b3-font-family-code: "Emojis Additional", "Emojis Reset", "JetBrainsMono-Regular", mononoki, Consolas, "Liberation Mono", var(--b3-font-family);
--b3-font-family-graph: arial;
--b3-font-family-emoji: "Apple Additional Emojis", emojis;
--b3-font-family-emoji: "Emojis Additional", emojis;
--b3-font-family-math: KaTeX_Math;
--b3-font-size: 14px;

Expand Down Expand Up @@ -202,15 +202,15 @@

/* 微软字体斜体会被相邻背景遮挡,将 arial 放置其前 https://github.com/siyuan-note/siyuan/issues/11841;"Segoe UI" 和 Noto-COLRv1-2.047 冲突,故移除。 */
:root:lang(zh_CN) {
--b3-font-family: "Apple Additional Emojis", "Emojis Reset", BlinkMacSystemFont, Helvetica, "PingFang SC", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Source Han Sans SC", arial, "Microsoft Yahei", sans-serif, emojis;
--b3-font-family: "Emojis Additional", "Emojis Reset", BlinkMacSystemFont, Helvetica, "PingFang SC", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Source Han Sans SC", arial, "Microsoft Yahei", sans-serif, emojis;
}

:root:lang(zh_CHT) {
--b3-font-family: "Apple Additional Emojis", "Emojis Reset", BlinkMacSystemFont, Helvetica, "PingFang TC", "Luxi Sans", "DejaVu Sans", "Hiragino Sans TC", "Source Han Sans TC", "Microsoft JhengHei", arial, sans-serif, emojis;
--b3-font-family: "Emojis Additional", "Emojis Reset", BlinkMacSystemFont, Helvetica, "PingFang TC", "Luxi Sans", "DejaVu Sans", "Hiragino Sans TC", "Source Han Sans TC", "Microsoft JhengHei", arial, sans-serif, emojis;
}

:root:lang(ja_JP) {
--b3-font-family: "Apple Additional Emojis", "Emojis Reset", BlinkMacSystemFont, Helvetica, "Luxi Sans", "DejaVu Sans", "Hiragino Sans", "Yu Gothic UI", arial, sans-serif, emojis;
--b3-font-family: "Emojis Additional", "Emojis Reset", BlinkMacSystemFont, Helvetica, "Luxi Sans", "DejaVu Sans", "Hiragino Sans", "Yu Gothic UI", arial, sans-serif, emojis;
}

/* https://github.com/siyuan-note/siyuan/issues/6440 */
Expand Down
12 changes: 6 additions & 6 deletions app/appearance/themes/midnight/theme.css
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@
--b3-theme-on-error: #fff;

/* 字体 */
--b3-font-family: "Apple Additional Emojis", "Emojis Reset", BlinkMacSystemFont, Helvetica, "Luxi Sans", "DejaVu Sans", "Hiragino Sans", arial, sans-serif, emojis;
--b3-font-family: "Emojis Additional", "Emojis Reset", BlinkMacSystemFont, Helvetica, "Luxi Sans", "DejaVu Sans", "Hiragino Sans", arial, sans-serif, emojis;
--b3-font-family-protyle: var(--b3-font-family);
--b3-font-family-code: "Apple Additional Emojis", "Emojis Reset", "JetBrainsMono-Regular", mononoki, Consolas, "Liberation Mono", Menlo, Courier, monospace, var(--b3-font-family);
--b3-font-family-code: "Emojis Additional", "Emojis Reset", "JetBrainsMono-Regular", mononoki, Consolas, "Liberation Mono", var(--b3-font-family);
--b3-font-family-graph: arial;
--b3-font-family-emoji: "Apple Additional Emojis", emojis;
--b3-font-family-emoji: "Emojis Additional", emojis;
--b3-font-family-math: KaTeX_Math;
--b3-font-size: 14px;

Expand Down Expand Up @@ -202,15 +202,15 @@

/* 微软字体斜体会被相邻背景遮挡,将 arial 放置其前 https://github.com/siyuan-note/siyuan/issues/11841;"Segoe UI" 和 Noto-COLRv1-2.047 冲突,故移除。 */
:root:lang(zh_CN) {
--b3-font-family: "Apple Additional Emojis", "Emojis Reset", BlinkMacSystemFont, Helvetica, "PingFang SC", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Source Han Sans SC", arial, "Microsoft Yahei", sans-serif, emojis;
--b3-font-family: "Emojis Additional", "Emojis Reset", BlinkMacSystemFont, Helvetica, "PingFang SC", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Source Han Sans SC", arial, "Microsoft Yahei", sans-serif, emojis;
}

:root:lang(zh_CHT) {
--b3-font-family: "Apple Additional Emojis", "Emojis Reset", BlinkMacSystemFont, Helvetica, "PingFang TC", "Luxi Sans", "DejaVu Sans", "Hiragino Sans TC", "Source Han Sans TC", "Microsoft JhengHei", arial, sans-serif, emojis;
--b3-font-family: "Emojis Additional", "Emojis Reset", BlinkMacSystemFont, Helvetica, "PingFang TC", "Luxi Sans", "DejaVu Sans", "Hiragino Sans TC", "Source Han Sans TC", "Microsoft JhengHei", arial, sans-serif, emojis;
}

:root:lang(ja_JP) {
--b3-font-family: "Apple Additional Emojis", "Emojis Reset", BlinkMacSystemFont, Helvetica, "Luxi Sans", "DejaVu Sans", "Hiragino Sans", "Yu Gothic UI", arial, sans-serif, emojis;
--b3-font-family: "Emojis Additional", "Emojis Reset", BlinkMacSystemFont, Helvetica, "Luxi Sans", "DejaVu Sans", "Hiragino Sans", "Yu Gothic UI", arial, sans-serif, emojis;
}

/* https://github.com/siyuan-note/siyuan/issues/6440 */
Expand Down
13 changes: 13 additions & 0 deletions app/src/protyle/util/compatibility.ts
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,19 @@ export const isMac = () => {
return navigator.platform.toUpperCase().indexOf("MAC") > -1;
};

export const isWin11 = async () => {
if (!navigator.userAgentData || !navigator.userAgentData.getHighEntropyValues) {
return false;
}
const ua = await navigator.userAgentData.getHighEntropyValues(["platformVersion"])
if (navigator.userAgentData.platform === "Windows") {
if (parseInt(ua.platformVersion.split('.')[0]) >= 13) {
return true
}
}
return false
}

export const isInAndroid = () => {
return window.siyuan.config.system.container === "android" && window.JSAndroid;
};
Expand Down
44 changes: 44 additions & 0 deletions app/src/types/user-agent.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// WICG Spec: https://wicg.github.io/ua-client-hints

declare interface Navigator extends NavigatorUA {}
declare interface WorkerNavigator extends NavigatorUA {}

// https://wicg.github.io/ua-client-hints/#navigatorua
declare interface NavigatorUA {
readonly userAgentData?: NavigatorUAData;
}

// https://wicg.github.io/ua-client-hints/#dictdef-navigatoruabrandversion
interface NavigatorUABrandVersion {
readonly brand: string;
readonly version: string;
}

// https://wicg.github.io/ua-client-hints/#dictdef-uadatavalues
interface UADataValues {
readonly brands?: NavigatorUABrandVersion[];
readonly mobile?: boolean;
readonly platform?: string;
readonly architecture?: string;
readonly bitness?: string;
readonly formFactor?: string[];
readonly model?: string;
readonly platformVersion?: string;
/** @deprecated in favour of fullVersionList */
readonly uaFullVersion?: string;
readonly fullVersionList?: NavigatorUABrandVersion[];
readonly wow64?: boolean;
}

// https://wicg.github.io/ua-client-hints/#dictdef-ualowentropyjson
interface UALowEntropyJSON {
readonly brands: NavigatorUABrandVersion[];
readonly mobile: boolean;
readonly platform: string;
}

// https://wicg.github.io/ua-client-hints/#navigatoruadata
interface NavigatorUAData extends UALowEntropyJSON {
getHighEntropyValues(hints: string[]): Promise<UADataValues>;
toJSON(): UALowEntropyJSON;
}
54 changes: 39 additions & 15 deletions app/src/util/assets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {exportLayout} from "../layout/util";
/// #endif
import {fetchPost} from "./fetch";
import {appearance} from "../config/appearance";
import {isInAndroid, isInHarmony, isInIOS, isIPad, isIPhone, isMac} from "../protyle/util/compatibility";
import {isInAndroid, isInHarmony, isInIOS, isIPad, isIPhone, isMac, isWin11} from "../protyle/util/compatibility";

const loadThirdIcon = (iconURL: string, data: Config.IAppearance) => {
addScript(iconURL, "iconDefaultScript").then(() => {
Expand Down Expand Up @@ -199,14 +199,15 @@ export const addGA = () => {
}
};

export const setInlineStyle = (set = true) => {
export const setInlineStyle = async (set = true) => {
const height = Math.floor(window.siyuan.config.editor.fontSize * 1.625);
let style;

// Emojis Reset: 字体中包含了 emoji,需重置
// Apple Additional Emojis: 苹果字体中没有的 emoji
// Emojis Additional: 苹果/win11 字体中没有的 emoji
if (isMac() || isIPad() || isIPhone()) {
style = `@font-face {
font-family: "Apple Additional Emojis";
font-family: "Emojis Additional";
src: url(stage/build/fonts/Noto-COLRv1.woff2) format("woff2");
unicode-range: U+1fae9, U+1fac6, U+1fabe, U+1fadc, U+e50a, U+1fa89, U+1fadf, U+1f1e6-1f1ff, U+1fa8f;
}
Expand All @@ -215,7 +216,7 @@ export const setInlineStyle = (set = true) => {
src: local("Apple Color Emoji"),
local("Segoe UI Emoji"),
local("Segoe UI Symbol");
unicode-range: U+263a, U+1fae4, U+2194-2199, U+2934-2935, U+25b6, U+25c0, U+23cf, U+2640, U+2642, U+2611, U+303d,
unicode-range: U+26a1, U+21a9, U+21aa, U+2708, U+263a, U+1fae4, U+2194-2199, U+2934-2935, U+25b6, U+25c0, U+23cf, U+2640, U+2642, U+2611, U+303d,
U+3030, U+00a9, U+00ae, U+2122, U+1f170, U+1f171, U+24c2, U+1f17e, U+1f17f, U+1f250, U+1f21a, U+1f22f, U+1f232-1f23a,
U+1f251, U+3297, U+3299, U+2639, U+2660, U+2666, U+2665, U+2663, U+26A0;
}
Expand All @@ -226,7 +227,37 @@ export const setInlineStyle = (set = true) => {
local("Segoe UI Symbol");
}`
} else {
style = `@font-face {
const isWin11Browser = await isWin11();
if (isWin11Browser) {
style = `@font-face {
font-family: "Emojis Additional";
src: url(stage/build/fonts/Noto-COLRv1.woff2) format("woff2");
unicode-range: U+1fae9, U+1fac6, U+1fabe, U+1fadc, U+e50a, U+1fa89, U+1fadf, U+1f1e6-1f1ff, U+1fa8f;
}
@font-face {
font-family: "Emojis Reset";
src: local("Segoe UI Emoji"),
local("Segoe UI Symbol");
unicode-range: U+263a, U+1fae4, U+2194-2199, U+2934-2935, U+25b6, U+25c0, U+23cf, U+2640, U+2642, U+2611, U+303d,
U+3030, U+00a9, U+00ae, U+2122, U+1f170, U+1f171, U+24c2, U+1f17e, U+1f17f, U+1f250, U+1f21a, U+1f22f, U+1f232-1f23a,
U+1f251, U+3297, U+3299, U+2639, U+2660, U+2666, U+2665, U+2663, U+26A0;
}
@font-face {
font-family: "Emojis";
src: local("Segoe UI Emoji"),
local("Segoe UI Symbol");
}`;
} else {
style = `
@font-face {
font-family: "Emojis Reset";
src: url(stage/build/fonts/Noto-COLRv1.woff2) format("woff2");
unicode-range: U+263a, U+2194-2199, U+2934-2935, U+2639, U+26a0, U+25b6, U+25c0, U+23cf, U+2640, U+2642, U+203c, U+2049,
U+2611, U+303d, U+00a9, U+00ae, U+2122, U+1f170-1f171, U+24c2, U+1f17e, U+1f17f, U+1f22f, U+1f250, U+1f21a,
U+1f232-1f23a, U+1f251, U+3297, U+3299, U+25aa, U+25ab, U+2660, U+2666, U+2665, U+2663, U+1f636, U+1f62e, U+1f642,
U+1f635, U+2620, U+2763, U+2764, U+1f441, U+270c, U+261d, U+270d, U+200d, U+e50a, U+3030, U+21aa, U+21a9;
}
@font-face {
font-family: "Emojis";
src: url(stage/build/fonts/Noto-COLRv1.woff2) format("woff2"),
local("Segoe UI Emoji"),
Expand All @@ -236,15 +267,8 @@ export const setInlineStyle = (set = true) => {
local("Noto Color Emoji"),
local("Android Emoji"),
local("EmojiSymbols");
}
@font-face {
font-family: "Emojis Reset";
src: url(stage/build/fonts/Noto-COLRv1.woff2) format("woff2");
unicode-range: U+263a, U+2194-2199, U+2934-2935, U+2639, U+26a0, U+25b6, U+25c0, U+23cf, U+2640, U+2642, U+203c, U+2049,
U+2611, U+303d, U+00a9, U+00ae, U+2122, U+1f170-1f171, U+24c2, U+1f17e, U+1f17f, U+1f22f, U+1f250, U+1f21a,
U+1f232-1f23a, U+1f251, U+3297, U+3299, U+25aa, U+25ab, U+2660, U+2666, U+2665, U+2663, U+1f636, U+1f62e, U+1f642,
U+1f635, U+2620, U+2763, U+2764, U+1f441, U+270c, U+261d, U+270d, U+200d, U+e50a, U+3030, U+21aa, U+21a9;
}`;
}
}
style += `.b3-typography, .protyle-wysiwyg, .protyle-title {font-size:${window.siyuan.config.editor.fontSize}px !important}
.b3-typography code:not(.hljs), .protyle-wysiwyg span[data-type~=code] { font-variant-ligatures: ${window.siyuan.config.editor.codeLigatures ? "normal" : "none"} }
Expand All @@ -264,7 +288,7 @@ export const setInlineStyle = (set = true) => {
.protyle-wysiwyg .li {min-height:${height + 8}px}
.protyle-gutters button svg {height:${height}px}`;
if (window.siyuan.config.editor.fontFamily) {
style += `\n.b3-typography:not(.b3-typography--default), .protyle-wysiwyg, .protyle-title {font-family: "Apple Additional Emojis", "Emojis Reset", "${window.siyuan.config.editor.fontFamily}", var(--b3-font-family)}`;
style += `\n.b3-typography:not(.b3-typography--default), .protyle-wysiwyg, .protyle-title {font-family: "Emojis Additional", "Emojis Reset", "${window.siyuan.config.editor.fontFamily}", var(--b3-font-family)}`;
}
// pad 端菜单移除显示,如工作空间
if ("ontouchend" in document) {
Expand Down

0 comments on commit 25a0e85

Please sign in to comment.