@plone/volto 17.0.0-alpha.6 → 17.0.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/package.json +1 -1
- package/packages/volto-slate/package.json +1 -1
- package/src/actions/language/language.js +8 -8
- package/src/components/manage/Add/Add.jsx +2 -2
- package/src/components/manage/Blocks/Search/components/DateRangeFacet.jsx +4 -1
- package/src/components/manage/Multilingual/CreateTranslation.jsx +2 -2
- package/src/components/manage/Multilingual/TranslationObject.jsx +4 -3
- package/src/components/manage/Preferences/PersonalPreferences.jsx +2 -2
- package/src/components/manage/Toolbar/Types.jsx +2 -2
- package/src/components/manage/Widgets/DatetimeWidget.jsx +9 -5
- package/src/components/manage/Widgets/RecurrenceWidget/ByDayField.jsx +2 -1
- package/src/components/manage/Widgets/RecurrenceWidget/MonthOfTheYearField.jsx +2 -1
- package/src/components/manage/Widgets/RecurrenceWidget/Occurences.jsx +2 -1
- package/src/components/manage/Widgets/RecurrenceWidget/RecurrenceWidget.jsx +7 -2
- package/src/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthField.jsx +2 -1
- package/src/components/theme/Footer/Footer.jsx +2 -13
- package/src/components/theme/LanguageSelector/LanguageSelector.js +8 -3
- package/src/components/theme/Logo/Logo.jsx +2 -1
- package/src/components/theme/MultilingualRedirector/MultilingualRedirector.jsx +2 -2
- package/src/components/theme/Navigation/NavItem.jsx +4 -2
- package/src/components/theme/Sitemap/Sitemap.jsx +5 -3
- package/src/components/theme/View/EventDatesInfo.jsx +2 -1
- package/src/components/theme/Widgets/DateWidget.jsx +2 -1
- package/src/components/theme/Widgets/DatetimeWidget.jsx +2 -1
- package/src/helpers/Utils/Utils.js +21 -9
- package/src/helpers/Utils/Utils.test.js +4 -4
- package/src/helpers/index.js +5 -2
- package/src/middleware/api.js +7 -3
- package/src/server.jsx +28 -23
- package/.changelog.draft +0 -33
- package/.editorconfig +0 -36
- package/.storybook/main.js +0 -127
- package/.storybook/manager.js +0 -15
- package/.storybook/preview.js +0 -21
- package/.storybook/static/previewImage.svg +0 -48
- package/.vale.ini +0 -10
- package/.yarnrc.yml +0 -5
- package/jsdoc.json +0 -16
- package/netlify.toml +0 -5
- package/pyvenv.cfg +0 -3
- package/share/man/man1/ttx.1 +0 -225
- package/styles/Vocab/Base/accept.txt +0 -0
- package/styles/Vocab/Base/reject.txt +0 -0
- package/styles/Vocab/Plone/accept.txt +0 -10
- package/styles/Vocab/Plone/reject.txt +0 -5
- package/towncrier.toml +0 -33
package/src/middleware/api.js
CHANGED
|
@@ -18,7 +18,11 @@ import {
|
|
|
18
18
|
SET_APIERROR,
|
|
19
19
|
} from '@plone/volto/constants/ActionTypes';
|
|
20
20
|
import { changeLanguage } from '@plone/volto/actions';
|
|
21
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
toGettextLang,
|
|
23
|
+
toReactIntlLang,
|
|
24
|
+
getCookieOptions,
|
|
25
|
+
} from '@plone/volto/helpers';
|
|
22
26
|
let socket = null;
|
|
23
27
|
|
|
24
28
|
/**
|
|
@@ -205,11 +209,11 @@ const apiMiddlewareFactory = (api) => ({ dispatch, getState }) => (next) => (
|
|
|
205
209
|
const lang = result?.language?.token;
|
|
206
210
|
if (
|
|
207
211
|
lang &&
|
|
208
|
-
getState().intl.
|
|
212
|
+
getState().intl.locale !== toReactIntlLang(lang) &&
|
|
209
213
|
!subrequest &&
|
|
210
214
|
config.settings.supportedLanguages.includes(lang)
|
|
211
215
|
) {
|
|
212
|
-
const langFileName =
|
|
216
|
+
const langFileName = toGettextLang(lang);
|
|
213
217
|
import('~/../locales/' + langFileName + '.json').then((locale) => {
|
|
214
218
|
dispatch(changeLanguage(lang, locale.default));
|
|
215
219
|
});
|
package/src/server.jsx
CHANGED
|
@@ -26,8 +26,9 @@ import {
|
|
|
26
26
|
Html,
|
|
27
27
|
Api,
|
|
28
28
|
persistAuthToken,
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
toBackendLang,
|
|
30
|
+
toGettextLang,
|
|
31
|
+
toReactIntlLang,
|
|
31
32
|
} from '@plone/volto/helpers';
|
|
32
33
|
import { changeLanguage } from '@plone/volto/actions';
|
|
33
34
|
|
|
@@ -44,9 +45,9 @@ let locales = {};
|
|
|
44
45
|
|
|
45
46
|
if (config.settings) {
|
|
46
47
|
config.settings.supportedLanguages.forEach((lang) => {
|
|
47
|
-
const langFileName =
|
|
48
|
+
const langFileName = toGettextLang(lang);
|
|
48
49
|
import('@root/../locales/' + langFileName + '.json').then((locale) => {
|
|
49
|
-
locales = { ...locales, [lang]: locale.default };
|
|
50
|
+
locales = { ...locales, [toReactIntlLang(lang)]: locale.default };
|
|
50
51
|
});
|
|
51
52
|
});
|
|
52
53
|
}
|
|
@@ -101,13 +102,15 @@ server.use(function (err, req, res, next) {
|
|
|
101
102
|
function setupServer(req, res, next) {
|
|
102
103
|
const api = new Api(req);
|
|
103
104
|
|
|
104
|
-
const lang =
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
105
|
+
const lang = toReactIntlLang(
|
|
106
|
+
new locale.Locales(
|
|
107
|
+
req.universalCookies.get('I18N_LANGUAGE') ||
|
|
108
|
+
config.settings.defaultLanguage ||
|
|
109
|
+
req.headers['accept-language'],
|
|
110
|
+
)
|
|
111
|
+
.best(supported)
|
|
112
|
+
.toString(),
|
|
113
|
+
);
|
|
111
114
|
|
|
112
115
|
// Minimum initial state for the fake Redux store instance
|
|
113
116
|
const initialState = {
|
|
@@ -176,13 +179,15 @@ server.get('/*', (req, res) => {
|
|
|
176
179
|
|
|
177
180
|
const browserdetect = detect(req.headers['user-agent']);
|
|
178
181
|
|
|
179
|
-
const lang =
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
182
|
+
const lang = toReactIntlLang(
|
|
183
|
+
new locale.Locales(
|
|
184
|
+
req.universalCookies.get('I18N_LANGUAGE') ||
|
|
185
|
+
config.settings.defaultLanguage ||
|
|
186
|
+
req.headers['accept-language'],
|
|
187
|
+
)
|
|
188
|
+
.best(supported)
|
|
189
|
+
.toString(),
|
|
190
|
+
);
|
|
186
191
|
|
|
187
192
|
const authToken = req.universalCookies.get('auth_token');
|
|
188
193
|
const initialState = {
|
|
@@ -217,7 +222,7 @@ server.get('/*', (req, res) => {
|
|
|
217
222
|
|
|
218
223
|
loadOnServer({ store, location, routes, api })
|
|
219
224
|
.then(() => {
|
|
220
|
-
const
|
|
225
|
+
const initialLang =
|
|
221
226
|
req.universalCookies.get('I18N_LANGUAGE') ||
|
|
222
227
|
config.settings.defaultLanguage ||
|
|
223
228
|
req.headers['accept-language'];
|
|
@@ -230,15 +235,15 @@ server.get('/*', (req, res) => {
|
|
|
230
235
|
// present the language token field, for some reason. In this case, we
|
|
231
236
|
// should follow the cookie rather then switching the language
|
|
232
237
|
const contentLang = store.getState().content.get?.error
|
|
233
|
-
?
|
|
238
|
+
? initialLang
|
|
234
239
|
: store.getState().content.data?.language?.token ||
|
|
235
240
|
config.settings.defaultLanguage;
|
|
236
241
|
|
|
237
|
-
if (
|
|
238
|
-
const
|
|
242
|
+
if (toBackendLang(initialLang) !== contentLang) {
|
|
243
|
+
const newLang = toReactIntlLang(
|
|
239
244
|
new locale.Locales(contentLang).best(supported).toString(),
|
|
240
245
|
);
|
|
241
|
-
store.dispatch(changeLanguage(
|
|
246
|
+
store.dispatch(changeLanguage(newLang, locales[newLang], req));
|
|
242
247
|
}
|
|
243
248
|
|
|
244
249
|
const context = {};
|
package/.changelog.draft
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
## 17.0.0-alpha.6 (2023-05-11)
|
|
2
|
-
|
|
3
|
-
### Feature
|
|
4
|
-
|
|
5
|
-
- Changed control panel list to be fetched server-side not client-side
|
|
6
|
-
@JeffersonBledsoe [#3749](https://github.com/plone/volto/issues/3749)
|
|
7
|
-
|
|
8
|
-
### Bugfix
|
|
9
|
-
|
|
10
|
-
- Apply suggestion from browser for password field @lord2anil [#3990](https://github.com/plone/volto/issues/3990)
|
|
11
|
-
- Open all accordion'd content in InlineForm by default, allow arbitrarily close any number of them. @sneridagh [#4178](https://github.com/plone/volto/issues/4178)
|
|
12
|
-
- Fix duplicating listing block by removing block uid from blocks data. @ksuess [#4234](https://github.com/plone/volto/issues/4234)
|
|
13
|
-
- The tabs for the add page was unresponsive on mobile devices. Fixed this by changing flex-wrap property. @sudhanshu1309 [#4506](https://github.com/plone/volto/issues/4506)
|
|
14
|
-
- (fix):Object.normaliseMail: Cannot read properties of null @dobri1408 [#4558](https://github.com/plone/volto/issues/4558)
|
|
15
|
-
- Update add-on control panel tranlsations: install -> activate. @ksuess [#4582](https://github.com/plone/volto/issues/4582)
|
|
16
|
-
- Fix robot.txt - the sitemap link should respect x-forwarded headers @reebalazs [#4638](https://github.com/plone/volto/issues/4638)
|
|
17
|
-
- Fix Move to top of folder ordering in folder content view by searching also @iFlameing [#4690](https://github.com/plone/volto/issues/4690)
|
|
18
|
-
- Fix faulty D&D elements in ObjectBrowserList widget @sneridagh [#4703](https://github.com/plone/volto/issues/4703)
|
|
19
|
-
- Fix fetching API paths with urlencoded characters in the querystring. @davisagli [#4718](https://github.com/plone/volto/issues/4718)
|
|
20
|
-
|
|
21
|
-
### Internal
|
|
22
|
-
|
|
23
|
-
- Change conditional checking to optional chaining for a theme icon @nilootpal [#4567](https://github.com/plone/volto/issues/4567)
|
|
24
|
-
- Security upgrade for momentjs [#4715](https://github.com/plone/volto/issues/4715)
|
|
25
|
-
- Upgrade to Plone 6.0.4 @sneridagh [#4743](https://github.com/plone/volto/issues/4743)
|
|
26
|
-
|
|
27
|
-
### Documentation
|
|
28
|
-
|
|
29
|
-
- Added documentation regarding the static middleware. @BhardwajAditya-github [#4518](https://github.com/plone/volto/issues/4518)
|
|
30
|
-
- Use new URL `6.docs.plone.org`. @stevepiercy [#4726](https://github.com/plone/volto/issues/4726)
|
|
31
|
-
- Synch stuff from `16.x.x` branch that should have been in `master` as well. @stevepiercy [#4728](https://github.com/plone/volto/issues/4728)
|
|
32
|
-
- Fix link in Volto, remove from linkcheck ignore in Documentation. @stevepiercy [#4742](https://github.com/plone/volto/issues/4742)
|
|
33
|
-
|
package/.editorconfig
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# EditorConfig Configurtaion file, for more details see:
|
|
2
|
-
# http://EditorConfig.org
|
|
3
|
-
# EditorConfig is a convention description, that could be interpreted
|
|
4
|
-
# by multiple editors to enforce common coding conventions for specific
|
|
5
|
-
# file types
|
|
6
|
-
|
|
7
|
-
# top-most EditorConfig file:
|
|
8
|
-
# Will ignore other EditorConfig files in Home directory or upper tree level.
|
|
9
|
-
root = true
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
[*] # For All Files
|
|
13
|
-
# Unix-style newlines with a newline ending every file
|
|
14
|
-
end_of_line = lf
|
|
15
|
-
insert_final_newline = true
|
|
16
|
-
trim_trailing_whitespace = true
|
|
17
|
-
# Set default charset
|
|
18
|
-
charset = utf-8
|
|
19
|
-
# Indent style default
|
|
20
|
-
indent_style = space
|
|
21
|
-
# Max Line Length - a hard line wrap, should be disabled
|
|
22
|
-
max_line_length = off
|
|
23
|
-
|
|
24
|
-
[*.{py,cfg,ini}]
|
|
25
|
-
# 4 space indentation
|
|
26
|
-
indent_size = 4
|
|
27
|
-
|
|
28
|
-
[*.{html,dtml,pt,zpt,xml,zcml,js,jsx,json,less,css,yaml,yml}]
|
|
29
|
-
# 2 space indentation
|
|
30
|
-
indent_size = 2
|
|
31
|
-
|
|
32
|
-
[{Makefile,.gitmodules}]
|
|
33
|
-
# Tab indentation (no size specified, but view as 4 spaces)
|
|
34
|
-
indent_style = tab
|
|
35
|
-
indent_size = unset
|
|
36
|
-
tab_width = unset
|
package/.storybook/main.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
const webpack = require('webpack');
|
|
2
|
-
const fs = require('fs');
|
|
3
|
-
const path = require('path');
|
|
4
|
-
const makeLoaderFinder = require('razzle-dev-utils/makeLoaderFinder');
|
|
5
|
-
const fileLoaderFinder = makeLoaderFinder('file-loader');
|
|
6
|
-
const projectRootPath = path.resolve('.');
|
|
7
|
-
const lessPlugin = require('../webpack-plugins/webpack-less-plugin');
|
|
8
|
-
const createConfig = require('../node_modules/razzle/config/createConfigAsync.js');
|
|
9
|
-
const razzleConfig = require(path.join(projectRootPath, 'razzle.config.js'));
|
|
10
|
-
const SVGLOADER = {
|
|
11
|
-
test: /icons\/.*\.svg$/,
|
|
12
|
-
use: [
|
|
13
|
-
{
|
|
14
|
-
loader: 'svg-loader',
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
loader: 'svgo-loader',
|
|
18
|
-
options: {
|
|
19
|
-
plugins: [
|
|
20
|
-
{
|
|
21
|
-
name: 'preset-default',
|
|
22
|
-
params: {
|
|
23
|
-
overrides: {
|
|
24
|
-
convertPathData: false,
|
|
25
|
-
removeViewBox: false,
|
|
26
|
-
},
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
'removeTitle',
|
|
30
|
-
'removeUselessStrokeAndFill',
|
|
31
|
-
],
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
],
|
|
35
|
-
};
|
|
36
|
-
const defaultRazzleOptions = {
|
|
37
|
-
verbose: false,
|
|
38
|
-
debug: {},
|
|
39
|
-
buildType: 'iso',
|
|
40
|
-
cssPrefix: 'static/css',
|
|
41
|
-
jsPrefix: 'static/js',
|
|
42
|
-
enableSourceMaps: true,
|
|
43
|
-
enableReactRefresh: true,
|
|
44
|
-
enableTargetBabelrc: false,
|
|
45
|
-
enableBabelCache: true,
|
|
46
|
-
forceRuntimeEnvVars: [],
|
|
47
|
-
mediaPrefix: 'static/media',
|
|
48
|
-
staticCssInDev: false,
|
|
49
|
-
emitOnErrors: false,
|
|
50
|
-
disableWebpackbar: false,
|
|
51
|
-
browserslist: ['>1%', 'last 4 versions', 'Firefox ESR', 'not ie 11', 'not dead']
|
|
52
|
-
};
|
|
53
|
-
module.exports = {
|
|
54
|
-
stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'],
|
|
55
|
-
addons: ['@storybook/addon-links', '@storybook/addon-essentials'],
|
|
56
|
-
staticDirs: ['./static'],
|
|
57
|
-
webpackFinal: async (config, {
|
|
58
|
-
configType
|
|
59
|
-
}) => {
|
|
60
|
-
// `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION'
|
|
61
|
-
// You can change the configuration based on that.
|
|
62
|
-
// 'PRODUCTION' is used when building the static version of storybook.
|
|
63
|
-
|
|
64
|
-
// Make whatever fine-grained changes you need
|
|
65
|
-
let baseConfig;
|
|
66
|
-
baseConfig = await createConfig('web', 'dev', {
|
|
67
|
-
// clearConsole: false,
|
|
68
|
-
modifyWebpackConfig: razzleConfig.modifyWebpackConfig,
|
|
69
|
-
plugins: razzleConfig.plugins
|
|
70
|
-
}, webpack, false, undefined, [], defaultRazzleOptions);
|
|
71
|
-
const AddonConfigurationRegistry = require('../addon-registry');
|
|
72
|
-
const registry = new AddonConfigurationRegistry(projectRootPath);
|
|
73
|
-
config = lessPlugin({
|
|
74
|
-
registry
|
|
75
|
-
}).modifyWebpackConfig({
|
|
76
|
-
env: {
|
|
77
|
-
target: 'web',
|
|
78
|
-
dev: 'dev'
|
|
79
|
-
},
|
|
80
|
-
webpackConfig: config,
|
|
81
|
-
webpackObject: webpack,
|
|
82
|
-
options: {}
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
// Put the SVG loader on top and prevent the asset/resource rule
|
|
86
|
-
// from processing the app's SVGs
|
|
87
|
-
config.module.rules.unshift(SVGLOADER);
|
|
88
|
-
const fileLoaderRule = config.module.rules.find(rule => rule.test.test('.svg'));
|
|
89
|
-
fileLoaderRule.exclude = /icons\/.*\.svg$/;
|
|
90
|
-
config.plugins.unshift(new webpack.DefinePlugin({
|
|
91
|
-
__DEVELOPMENT__: true,
|
|
92
|
-
__CLIENT__: true,
|
|
93
|
-
__SERVER__: false
|
|
94
|
-
}));
|
|
95
|
-
const resultConfig = {
|
|
96
|
-
...config,
|
|
97
|
-
resolve: {
|
|
98
|
-
...config.resolve,
|
|
99
|
-
alias: {
|
|
100
|
-
...config.resolve.alias,
|
|
101
|
-
...baseConfig.resolve.alias
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
// Addons have to be loaded with babel
|
|
107
|
-
const addonPaths = registry.addonNames.map(addon => fs.realpathSync(registry.packages[addon].modulePath));
|
|
108
|
-
resultConfig.module.rules[1].exclude = input =>
|
|
109
|
-
// exclude every input from node_modules except from @plone/volto
|
|
110
|
-
/node_modules\/(?!(@plone\/volto)\/)/.test(input) &&
|
|
111
|
-
// If input is in an addon, DON'T exclude it
|
|
112
|
-
!addonPaths.some(p => input.includes(p));
|
|
113
|
-
return resultConfig;
|
|
114
|
-
},
|
|
115
|
-
babel: async options => {
|
|
116
|
-
return {
|
|
117
|
-
...options,
|
|
118
|
-
plugins: [...options.plugins, ['./node_modules/babel-plugin-root-import/build/index.js', {
|
|
119
|
-
rootPathSuffix: './src'
|
|
120
|
-
}]]
|
|
121
|
-
// any extra options you want to set
|
|
122
|
-
};
|
|
123
|
-
},
|
|
124
|
-
core: {
|
|
125
|
-
builder: 'webpack5'
|
|
126
|
-
}
|
|
127
|
-
};
|
package/.storybook/manager.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { addons } from '@storybook/addons';
|
|
2
|
-
|
|
3
|
-
addons.setConfig({
|
|
4
|
-
isFullscreen: false,
|
|
5
|
-
showNav: true,
|
|
6
|
-
showPanel: true,
|
|
7
|
-
panelPosition: 'bottom',
|
|
8
|
-
sidebarAnimations: true,
|
|
9
|
-
enableShortcuts: true,
|
|
10
|
-
isToolshown: true,
|
|
11
|
-
theme: undefined,
|
|
12
|
-
selectedPanel: undefined,
|
|
13
|
-
initialActive: 'sidebar',
|
|
14
|
-
showRoots: true,
|
|
15
|
-
});
|
package/.storybook/preview.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import '@plone/volto/config'; // This is the bootstrap for the global config - client side
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { StaticRouter } from 'react-router-dom';
|
|
4
|
-
import { IntlProvider } from 'react-intl';
|
|
5
|
-
import enMessages from '@root/../locales/en.json';
|
|
6
|
-
|
|
7
|
-
import '@root/theme';
|
|
8
|
-
|
|
9
|
-
export const parameters = {
|
|
10
|
-
actions: { argTypesRegex: '^on[A-Z].*' },
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export const decorators = [
|
|
14
|
-
(Story) => (
|
|
15
|
-
<IntlProvider messages={enMessages} locale="en" defaultLocale="en">
|
|
16
|
-
<StaticRouter location="/">
|
|
17
|
-
<Story />
|
|
18
|
-
</StaticRouter>
|
|
19
|
-
</IntlProvider>
|
|
20
|
-
),
|
|
21
|
-
];
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
<!-- Generator: Adobe Illustrator 13.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
|
|
3
|
-
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
4
|
-
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
5
|
-
width="158.253px" height="40.686px" viewBox="0 0 158.253 40.686" enable-background="new 0 0 158.253 40.686"
|
|
6
|
-
xml:space="preserve">
|
|
7
|
-
<g>
|
|
8
|
-
<path fill="#0095D3" d="M65.327,23.208h-6.589v11.388h-4.393V5.638h10.981c5.653,0,9.271,3.742,9.271,8.785
|
|
9
|
-
S70.979,23.208,65.327,23.208z M65.082,9.583h-6.345v9.639h6.345c3.05,0,5.124-1.749,5.124-4.799
|
|
10
|
-
C70.206,11.372,68.132,9.583,65.082,9.583z"/>
|
|
11
|
-
<path fill="#0095D3" d="M83.969,34.596c-3.904,0-5.652-2.644-5.652-5.693V5.638h4.148v23.021c0,1.587,0.567,2.399,2.235,2.399h1.83
|
|
12
|
-
v3.538H83.969z"/>
|
|
13
|
-
<path fill="#0095D3" d="M104.762,32.399c-1.344,1.384-3.377,2.44-6.184,2.44c-2.805,0-4.799-1.058-6.141-2.44
|
|
14
|
-
c-1.951-2.032-2.439-4.637-2.439-8.134c0-3.457,0.488-6.061,2.439-8.094c1.342-1.383,3.336-2.44,6.141-2.44
|
|
15
|
-
c2.807,0,4.84,1.059,6.184,2.44c1.951,2.033,2.439,4.637,2.439,8.094C107.203,27.763,106.713,30.366,104.762,32.399z
|
|
16
|
-
M101.629,18.613c-0.773-0.773-1.83-1.181-3.051-1.181c-1.219,0-2.236,0.406-3.01,1.181c-1.26,1.261-1.422,3.416-1.422,5.652
|
|
17
|
-
s0.162,4.393,1.422,5.653c0.773,0.771,1.791,1.22,3.01,1.22c1.221,0,2.277-0.447,3.051-1.22c1.262-1.262,1.424-3.417,1.424-5.653
|
|
18
|
-
S102.891,19.873,101.629,18.613z"/>
|
|
19
|
-
<path fill="#0095D3" d="M123.643,34.596V22.029c0-3.214-1.83-4.597-4.147-4.597s-4.271,1.423-4.271,4.597v12.566h-4.147v-20.62
|
|
20
|
-
h4.065v2.074c1.425-1.546,3.416-2.318,5.49-2.318c2.115,0,3.865,0.691,5.084,1.871c1.586,1.545,2.074,3.497,2.074,5.815v13.178
|
|
21
|
-
L123.643,34.596L123.643,34.596z"/>
|
|
22
|
-
<path fill="#0095D3" d="M135.772,25.486c0,3.537,1.871,5.774,5.246,5.774c2.317,0,3.539-0.649,5.004-2.115l2.643,2.481
|
|
23
|
-
c-2.115,2.114-4.107,3.213-7.727,3.213c-5.166,0-9.273-2.725-9.273-10.574c0-6.671,3.457-10.534,8.744-10.534
|
|
24
|
-
c5.531,0,8.744,4.067,8.744,9.925v1.83H135.772z M144.475,19.791c-0.65-1.545-2.113-2.604-4.066-2.604
|
|
25
|
-
c-1.951,0-3.457,1.059-4.107,2.604c-0.406,0.936-0.488,1.546-0.529,2.807h9.273C145.003,21.337,144.883,20.726,144.475,19.791z"/>
|
|
26
|
-
<circle fill="#0095D3" cx="17.815" cy="11.516" r="4.402"/>
|
|
27
|
-
<path fill="#0095D3" d="M31.167,20.311c0,2.433-1.969,4.401-4.403,4.401c-2.427,0-4.401-1.97-4.401-4.401
|
|
28
|
-
c0-2.433,1.975-4.401,4.401-4.401C29.2,15.909,31.167,17.879,31.167,20.311z"/>
|
|
29
|
-
<circle fill="#0095D3" cx="17.801" cy="29.131" r="4.402"/>
|
|
30
|
-
<g>
|
|
31
|
-
<path fill="#0095D3" d="M20.441-0.045C9.207-0.044,0.1,9.063,0.099,20.298C0.1,31.532,9.207,40.639,20.441,40.641
|
|
32
|
-
c11.235-0.002,20.341-9.107,20.343-20.343C40.783,9.063,31.677-0.044,20.441-0.045z M31.891,31.747
|
|
33
|
-
c-2.937,2.934-6.972,4.742-11.45,4.743c-4.478-0.001-8.513-1.811-11.45-4.743C6.058,28.81,4.25,24.775,4.249,20.298
|
|
34
|
-
c0.001-4.478,1.809-8.513,4.743-11.45c2.937-2.934,6.972-4.742,11.45-4.743c4.478,0.001,8.513,1.81,11.45,4.743
|
|
35
|
-
c2.934,2.938,4.742,6.973,4.743,11.45C36.633,24.775,34.825,28.81,31.891,31.747z"/>
|
|
36
|
-
</g>
|
|
37
|
-
<g>
|
|
38
|
-
<path fill="#0095D3" d="M153.985,9.95c-1.195,0-2.164,0.971-2.164,2.168c0.002,1.197,0.969,2.168,2.164,2.168
|
|
39
|
-
c1.199,0,2.172-0.971,2.172-2.168S155.184,9.95,153.985,9.95z M153.985,13.968c-1.021-0.002-1.846-0.827-1.846-1.85
|
|
40
|
-
c0.002-1.021,0.825-1.849,1.846-1.851c1.023,0.002,1.852,0.828,1.854,1.851C155.836,13.141,155.008,13.966,153.985,13.968z"/>
|
|
41
|
-
</g>
|
|
42
|
-
<g>
|
|
43
|
-
<path fill="#0095D3" d="M154.507,13.409l-0.54-1.08h-0.486v1.08h-0.389v-2.564h0.994c0.484,0,0.796,0.313,0.796,0.75
|
|
44
|
-
c0,0.367-0.224,0.602-0.513,0.68l0.592,1.136L154.507,13.409L154.507,13.409z M154.056,11.195h-0.575v0.803h0.575
|
|
45
|
-
c0.261,0,0.437-0.147,0.437-0.399S154.317,11.195,154.056,11.195z"/>
|
|
46
|
-
</g>
|
|
47
|
-
</g>
|
|
48
|
-
</svg>
|
package/.vale.ini
DELETED
package/.yarnrc.yml
DELETED
package/jsdoc.json
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"tags": {
|
|
3
|
-
"allowUnknownTags": true
|
|
4
|
-
},
|
|
5
|
-
"source": {
|
|
6
|
-
"include": ["./src"],
|
|
7
|
-
"includePattern": ".+\\.js$",
|
|
8
|
-
"excludePattern": ".+\\.(spec|e2e)\\.js$"
|
|
9
|
-
},
|
|
10
|
-
"opts": {
|
|
11
|
-
"encoding": "utf8",
|
|
12
|
-
"destination": "jsdoc",
|
|
13
|
-
"recurse": true,
|
|
14
|
-
"verbose": true
|
|
15
|
-
}
|
|
16
|
-
}
|
package/netlify.toml
DELETED
package/pyvenv.cfg
DELETED
package/share/man/man1/ttx.1
DELETED
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
.Dd May 18, 2004
|
|
2
|
-
.\" ttx is not specific to any OS, but contrary to what groff_mdoc(7)
|
|
3
|
-
.\" seems to imply, entirely omitting the .Os macro causes 'BSD' to
|
|
4
|
-
.\" be used, so I give a zero-width space as its argument.
|
|
5
|
-
.Os \&
|
|
6
|
-
.\" The "FontTools Manual" argument apparently has no effect in
|
|
7
|
-
.\" groff 1.18.1. I think it is a bug in the -mdoc groff package.
|
|
8
|
-
.Dt TTX 1 "FontTools Manual"
|
|
9
|
-
.Sh NAME
|
|
10
|
-
.Nm ttx
|
|
11
|
-
.Nd tool for manipulating TrueType and OpenType fonts
|
|
12
|
-
.Sh SYNOPSIS
|
|
13
|
-
.Nm
|
|
14
|
-
.Bk
|
|
15
|
-
.Op Ar option ...
|
|
16
|
-
.Ek
|
|
17
|
-
.Bk
|
|
18
|
-
.Ar file ...
|
|
19
|
-
.Ek
|
|
20
|
-
.Sh DESCRIPTION
|
|
21
|
-
.Nm
|
|
22
|
-
is a tool for manipulating TrueType and OpenType fonts. It can convert
|
|
23
|
-
TrueType and OpenType fonts to and from an
|
|
24
|
-
.Tn XML Ns -based format called
|
|
25
|
-
.Tn TTX .
|
|
26
|
-
.Tn TTX
|
|
27
|
-
files have a
|
|
28
|
-
.Ql .ttx
|
|
29
|
-
extension.
|
|
30
|
-
.Pp
|
|
31
|
-
For each
|
|
32
|
-
.Ar file
|
|
33
|
-
argument it is given,
|
|
34
|
-
.Nm
|
|
35
|
-
detects whether it is a
|
|
36
|
-
.Ql .ttf ,
|
|
37
|
-
.Ql .otf
|
|
38
|
-
or
|
|
39
|
-
.Ql .ttx
|
|
40
|
-
file and acts accordingly: if it is a
|
|
41
|
-
.Ql .ttf
|
|
42
|
-
or
|
|
43
|
-
.Ql .otf
|
|
44
|
-
file, it generates a
|
|
45
|
-
.Ql .ttx
|
|
46
|
-
file; if it is a
|
|
47
|
-
.Ql .ttx
|
|
48
|
-
file, it generates a
|
|
49
|
-
.Ql .ttf
|
|
50
|
-
or
|
|
51
|
-
.Ql .otf
|
|
52
|
-
file.
|
|
53
|
-
.Pp
|
|
54
|
-
By default, every output file is created in the same directory as the
|
|
55
|
-
corresponding input file and with the same name except for the
|
|
56
|
-
extension, which is substituted appropriately.
|
|
57
|
-
.Nm
|
|
58
|
-
never overwrites existing files; if necessary, it appends a suffix to
|
|
59
|
-
the output file name before the extension, as in
|
|
60
|
-
.Pa Arial#1.ttf .
|
|
61
|
-
.Ss "General options"
|
|
62
|
-
.Bl -tag -width ".Fl t Ar table"
|
|
63
|
-
.It Fl h
|
|
64
|
-
Display usage information.
|
|
65
|
-
.It Fl d Ar dir
|
|
66
|
-
Write the output files to directory
|
|
67
|
-
.Ar dir
|
|
68
|
-
instead of writing every output file to the same directory as the
|
|
69
|
-
corresponding input file.
|
|
70
|
-
.It Fl o Ar file
|
|
71
|
-
Write the output to
|
|
72
|
-
.Ar file
|
|
73
|
-
instead of writing it to the same directory as the
|
|
74
|
-
corresponding input file.
|
|
75
|
-
.It Fl v
|
|
76
|
-
Be verbose. Write more messages to the standard output describing what
|
|
77
|
-
is being done.
|
|
78
|
-
.It Fl a
|
|
79
|
-
Allow virtual glyphs ID's on compile or decompile.
|
|
80
|
-
.El
|
|
81
|
-
.Ss "Dump options"
|
|
82
|
-
The following options control the process of dumping font files
|
|
83
|
-
(TrueType or OpenType) to
|
|
84
|
-
.Tn TTX
|
|
85
|
-
files.
|
|
86
|
-
.Bl -tag -width ".Fl t Ar table"
|
|
87
|
-
.It Fl l
|
|
88
|
-
List table information. Instead of dumping the font to a
|
|
89
|
-
.Tn TTX
|
|
90
|
-
file, display minimal information about each table.
|
|
91
|
-
.It Fl t Ar table
|
|
92
|
-
Dump table
|
|
93
|
-
.Ar table .
|
|
94
|
-
This option may be given multiple times to dump several tables at
|
|
95
|
-
once. When not specified, all tables are dumped.
|
|
96
|
-
.It Fl x Ar table
|
|
97
|
-
Exclude table
|
|
98
|
-
.Ar table
|
|
99
|
-
from the list of tables to dump. This option may be given multiple
|
|
100
|
-
times to exclude several tables from the dump. The
|
|
101
|
-
.Fl t
|
|
102
|
-
and
|
|
103
|
-
.Fl x
|
|
104
|
-
options are mutually exclusive.
|
|
105
|
-
.It Fl s
|
|
106
|
-
Split tables. Dump each table to a separate
|
|
107
|
-
.Tn TTX
|
|
108
|
-
file and write (under the name that would have been used for the output
|
|
109
|
-
file if the
|
|
110
|
-
.Fl s
|
|
111
|
-
option had not been given) one small
|
|
112
|
-
.Tn TTX
|
|
113
|
-
file containing references to the individual table dump files. This
|
|
114
|
-
file can be used as input to
|
|
115
|
-
.Nm
|
|
116
|
-
as long as the referenced files can be found in the same directory.
|
|
117
|
-
.It Fl i
|
|
118
|
-
.\" XXX: I suppose OpenType programs (exist and) are also affected.
|
|
119
|
-
Don't disassemble TrueType instructions. When this option is specified,
|
|
120
|
-
all TrueType programs (glyph programs, the font program and the
|
|
121
|
-
pre-program) are written to the
|
|
122
|
-
.Tn TTX
|
|
123
|
-
file as hexadecimal data instead of
|
|
124
|
-
assembly. This saves some time and results in smaller
|
|
125
|
-
.Tn TTX
|
|
126
|
-
files.
|
|
127
|
-
.It Fl y Ar n
|
|
128
|
-
When decompiling a TrueType Collection (TTC) file,
|
|
129
|
-
decompile font number
|
|
130
|
-
.Ar n ,
|
|
131
|
-
starting from 0.
|
|
132
|
-
.El
|
|
133
|
-
.Ss "Compilation options"
|
|
134
|
-
The following options control the process of compiling
|
|
135
|
-
.Tn TTX
|
|
136
|
-
files into font files (TrueType or OpenType):
|
|
137
|
-
.Bl -tag -width ".Fl t Ar table"
|
|
138
|
-
.It Fl m Ar fontfile
|
|
139
|
-
Merge the input
|
|
140
|
-
.Tn TTX
|
|
141
|
-
file
|
|
142
|
-
.Ar file
|
|
143
|
-
with
|
|
144
|
-
.Ar fontfile .
|
|
145
|
-
No more than one
|
|
146
|
-
.Ar file
|
|
147
|
-
argument can be specified when this option is used.
|
|
148
|
-
.It Fl b
|
|
149
|
-
Don't recalculate glyph bounding boxes. Use the values in the
|
|
150
|
-
.Tn TTX
|
|
151
|
-
file as is.
|
|
152
|
-
.El
|
|
153
|
-
.Sh "THE TTX FILE FORMAT"
|
|
154
|
-
You can find some information about the
|
|
155
|
-
.Tn TTX
|
|
156
|
-
file format in
|
|
157
|
-
.Pa documentation.html .
|
|
158
|
-
In particular, you will find in that file the list of tables understood by
|
|
159
|
-
.Nm
|
|
160
|
-
and the relations between TrueType GlyphIDs and the glyph names used in
|
|
161
|
-
.Tn TTX
|
|
162
|
-
files.
|
|
163
|
-
.Sh EXAMPLES
|
|
164
|
-
In the following examples, all files are read from and written to the
|
|
165
|
-
current directory. Additionally, the name given for the output file
|
|
166
|
-
assumes in every case that it did not exist before
|
|
167
|
-
.Nm
|
|
168
|
-
was invoked.
|
|
169
|
-
.Pp
|
|
170
|
-
Dump the TrueType font contained in
|
|
171
|
-
.Pa FreeSans.ttf
|
|
172
|
-
to
|
|
173
|
-
.Pa FreeSans.ttx :
|
|
174
|
-
.Pp
|
|
175
|
-
.Dl ttx FreeSans.ttf
|
|
176
|
-
.Pp
|
|
177
|
-
Compile
|
|
178
|
-
.Pa MyFont.ttx
|
|
179
|
-
into a TrueType or OpenType font file:
|
|
180
|
-
.Pp
|
|
181
|
-
.Dl ttx MyFont.ttx
|
|
182
|
-
.Pp
|
|
183
|
-
List the tables in
|
|
184
|
-
.Pa FreeSans.ttf
|
|
185
|
-
along with some information:
|
|
186
|
-
.Pp
|
|
187
|
-
.Dl ttx -l FreeSans.ttf
|
|
188
|
-
.Pp
|
|
189
|
-
Dump the
|
|
190
|
-
.Sq cmap
|
|
191
|
-
table from
|
|
192
|
-
.Pa FreeSans.ttf
|
|
193
|
-
to
|
|
194
|
-
.Pa FreeSans.ttx :
|
|
195
|
-
.Pp
|
|
196
|
-
.Dl ttx -t cmap FreeSans.ttf
|
|
197
|
-
.Sh NOTES
|
|
198
|
-
On MS\-Windows and MacOS,
|
|
199
|
-
.Nm
|
|
200
|
-
is available as a graphical application to which files can be dropped.
|
|
201
|
-
.Sh SEE ALSO
|
|
202
|
-
.Pa documentation.html
|
|
203
|
-
.Pp
|
|
204
|
-
.Xr fontforge 1 ,
|
|
205
|
-
.Xr ftinfo 1 ,
|
|
206
|
-
.Xr gfontview 1 ,
|
|
207
|
-
.Xr xmbdfed 1 ,
|
|
208
|
-
.Xr Font::TTF 3pm
|
|
209
|
-
.Sh AUTHORS
|
|
210
|
-
.Nm
|
|
211
|
-
was written by
|
|
212
|
-
.An -nosplit
|
|
213
|
-
.An "Just van Rossum" Aq just@letterror.com .
|
|
214
|
-
.Pp
|
|
215
|
-
This manual page was written by
|
|
216
|
-
.An "Florent Rougon" Aq f.rougon@free.fr
|
|
217
|
-
for the Debian GNU/Linux system based on the existing FontTools
|
|
218
|
-
documentation. It may be freely used, modified and distributed without
|
|
219
|
-
restrictions.
|
|
220
|
-
.\" For Emacs:
|
|
221
|
-
.\" Local Variables:
|
|
222
|
-
.\" fill-column: 72
|
|
223
|
-
.\" sentence-end: "[.?!][]\"')}]*\\($\\| $\\| \\| \\)[ \n]*"
|
|
224
|
-
.\" sentence-end-double-space: t
|
|
225
|
-
.\" End:
|