我选择自建笔记系统,最主要的考虑有四个:
- 我需要内链以连接零碎的知识点,第三方笔记软件对此支持均不太好;
- 我希望以文本形式编辑内容,不在格式、排版上消耗过多时间,第三方笔记软件虽然有对 MarkDown 的支持,但速度太慢;
- 随着时间的推移,内容的增加,自设义设置必不可少,第三方笔记软件只会按产品经理的节奏升级;
- 我也担心部分笔记内容被监管和谐;
我对 DokuWiki 的定位几经调整,最终决定用来记录论文和文摘,作为通读全书的补充,因为 DokuWiki 有个很好的设计,词条的 URL 和 标题可分别定义,既能保持 URL 的简洁,又能保证标题的完整,相对 MediaWiki 有优势。
但是 DokuWiki 的默认样式,对屏幕阅读不太友好,很难兼顾 PC 和 WAP。这是默认字体设置:
body {
font: normal 87.5%/1.4 Arial,sans-serif;
-webkit-text-size-adjust: 100%;
}
查询 Mozilla 文档,87.5% 是相对父级元素的字体大小,1.4 是行高。
/* Set the font size to 12px and the line height to 14px.
Set the font family to sans-serif */
p {
font: 12px/14px sans-serif;
}
/* Set the font size to 80% of the parent element
or default value (if no parent element present).
Set the font family to sans-serif */
p {
font: 80% sans-serif;
}
87.5%
这个字号相当于 14PX,在 PC 上阅读体验尚可,但到了 WAP,就显得太小了。如果统一调整字号为 20PX,PC 上又太大了。这是第一个问题。
第二个问题,即使提升字号到 17PX,读中文没什么问题,英文还是显小。
怎么解决这两个问题?
第一部分 调整移动字号
DokuWiki 不像 MediaWiki 一样支持 Common.css
和 Mobile.css
分别设置,只能通过 JavaScript 检测操作系统,为 WAP 调大字号。
在《怎样给 DokuWiki 添加备案号》我已经详细介绍了如何配置 DokuWiki,下面一步一步来。
检测操作系统,可以自己写 JavaScript 代码,但更好的方法是借助第三方 JavaScript 库,推荐 jQuery 插件 jQuery.depend:
vim lib/tpl/dokuwiki/footer.html
<script src="https://chenzixin.com/ivy/text/js/jquery/plugins/jquery.depend.min.js"></script>
vim conf/userscript.js
alert(jQuery.platform.original);
系统提示:jQuery is not defined. 可是查看 DokuWiki 的源码,有 jQuery 啊!
<!-- jQuery v3.5.1 -->
<script src="/lib/exe/jquery.php?tseed=34a552433bc33cc9c3bc32527289a0b2" defer="defer"></script>
不重要,先略过,可能是 defer="defer"
的影响,我先编辑 footer.html
自己引入 jQuery:
<script src="https://cdn.chenzixin.com/jquery/jquery-3.5.1.min.js"></script>
<script src="https://chenzixin.com/ivy/text/js/jquery/plugins/jquery.depend.min.js"></script>
此时,手机访问 DokuWiki,已经可以识别 android
和 iphone
,有了之前为 MediaWiki 调整字号的经验,接下来的编码非常简单:
function itfs( size ) {
var fs = size;
if ( !fs ) {
// some_variable is either null, undefined, 0, NaN, false, or an empty string
fs = 17;
}
const sheet = new CSSStyleSheet();
sheet.replaceSync( 'div.page p { font-size: ' + fs + 'px !important; }' );
document.adoptedStyleSheets = [sheet];
}
var os = $.platform.original;
if ( os == "android" || os == "iphone"){
itfs(20);
}
第二部分 手动增加字号
针对英文字体太小的问题,也可以借鉴 MediaWiki 的经验,调整字号的函数可以复用。
vim lib/tpl/dokuwiki/footer.html
<a href="#" onclick="itfs(22);">Increase Font Size</a>
实测 22PX 字体,阅读英文已经没那么吃力了。
收工。