1.0.2 • Published 4 years ago

gbook-plugin-fontsettings v1.0.2

Weekly downloads
3
License
Apache-2.0
Repository
github
Last release
4 years ago

gbook-plugin-fontsettings

设置网站的字体和颜色主题以获得更好的阅读体验

禁用此插件

这是默认插件,可以使用以下 book.json 配置禁用它:

{
    plugins: ["-fontsettings"]
}

配置

可以在以下位置配置此插件 book.json

默认配置为:

{
    "pluginsConfig": {
        "fontsettings": {
            "theme": 'white', // 'sepia', 'night' or 'white',
            "family": 'sans', // 'serif' or 'sans',
            "size": 2         // 1 - 4
        }
    }
}

插件API

此插件公开以下API,以轻松允许新主题管理插件行为。

所有的API函数使用前缀 gbook.fontsettings. ,例如 gbook.fontsettings.enlargeFontSize()

文字大小设置

gbook.fontsettings.enlargeFontSize()

将文档的字体大小增加 1 。最大值为 4

gbook.fontsettings.reduceFontSize()

将文档的字体大小减 1 。最小值为 1

字体设置

每个字体系列都应描述为:

var fontFamily = {
    config: 'sans',  // 主题中book.json中字体家族的名称
    text: 'Sans',    // 在菜单中显示字体的名称 
    id: 0            // 此font-family附加到CSS类的id
};

text 属性将用于在fontsettings下拉菜单中显示字体名称。

config 属性允许主题的用户在其 book.json 中选择默认字体。您必须在主题的前端JavaScript中处理所选字体的设置。

例如:

// book.json
{
    plugins: ["my-theme"],
    pluginsConfig: {
        "my-theme": {
            "font-family": "sans"
        }
    }
}
// my-theme.js
require('gbook', function(gbook) {
    var FONT_FAMILIES = [
        {
            config: 'sans',
            text: 'Sans',
            id: 0
        },
        {
            config: 'serif',
            text: 'Serif',
            id: 1
        }
    ];

    gbook.events.on('start', function(e, config) {
        // 读取配置
        var themeConfig = config['my-theme'],
            defaultFont = themeConfig['font-family'];

        // 初始化新的字体
        gbook.fontsettings.setFamilies(FONT_FAMILIES);
        // 设置为已配置的font-family
        gbook.fontsettings.setFamily(defaultFont);
    });
});

id 属性使您可以定义用于CSS规则的特定ID,如下所述。

CSS规则

在菜单中选择字体后,CSS类 font-family-<id> 将应用于主题书的根元素 <div class="book">

然后可以使用父选择器轻松地定义字体的CSS规则 .book.font-family-<id>

.book.font-family-<id> {
  font-family: 'My Awesome Font';
}
管理字体
gbook.fontsettings.getFamilies()

返回当前设置的字体。

默认情况下,字体为:

// 默认字体
var FAMILIES = [
    {
        config: 'serif',
        text: 'Serif',
        id: 0
    },
    {
        config: 'sans',
        text: 'Sans',
        id: 1
    }
];
gbook.fontsettings.setFamilies()

设置新的字体配置,作为字体对象的数组,由 plugin-fontsettings 格式使用:

var FONT_FAMILIES = [
    {
        config: 'sans',
        text: 'Sans',
        id: 0
    },
    {
        config: 'serif',
        text: 'Serif',
        id: 1
    }
];

gbook.fontsettings.setFamilies(FONT_FAMILIES);

这将重新创建fontsettings菜单以反映所做的更改

gbook.fontsettings.setFamily()

以 font-family config 键作为参数,并更新本书使用的 font-family。

这基本上将CSS类与相应的家族一起应用 id.font-family-<id>

颜色主题

设置和操作颜色主题遵循与字体完全相同的规则。

这是插件中颜色主题的默认值:

// 默认主题
var THEMES = [
    {
        config: 'white',
        text: 'White',
        id: 0
    },
    {
        config: 'sepia',
        text: 'Sepia',
        id: 1
    },
    {
        config: 'night',
        text: 'Night',
        id: 2
    }
];
CSS规则

用于颜色主题的CSS类将采用以下形式:.color-theme-<id>

注意: 不会 id: 0 应用带有颜色主题的CSS类。基本上,第一个颜色主题对应于默认主题的颜色。

例如,使用默认的颜色主题:

gbook.fontsettings.setTheme('night');

将导致根元素的以下HTML状态:

<div class="book color-theme-2">

而:

gbook.fontsettings.setTheme('white');

将重置根元素的HTML状态:

<div class="book">
管理颜色主题
gbook.fontsettings.getFamilies()

返回当前设置的颜色主题。

默认情况下,字体为:

// 默认主题
var THEMES = [
    {
        config: 'white',
        text: 'White',
        id: 0
    },
    {
        config: 'sepia',
        text: 'Sepia',
        id: 1
    },
    {
        config: 'night',
        text: 'Night',
        id: 2
    }
];
gbook.fontsettings.setThemes()

将新的颜色主题配置设置为字体对象的数组,供 plugin-fontsettings 格式使用:

var COLOR_THEMES = [
    {
        config: 'light',
        text: 'Light',
        id: 0
    },
    {
        config: 'dark',
        text: 'Dark',
        id: 1
    }
];

gbook.fontsettings.setThemes(COLOR_THEMES);

这将重新创建fontsettings菜单以反映所做的更改。

gbook.fontsettings.setTheme()

以颜色主题 config 键作为参数并更新本书使用的颜色主题。

这将基本上应用具有相应主题 id: .color theme-<id> 的CSS类,如果所选主题 id0 ,则删除应用的CSS类。