String template = "%1$s;%2$s;%3$s;%4$s;\n";
myStringBuilder.add(String.format(template, "\"station_code\"", "\"station_addr\"", "\"camera_code\"", "\"camera_ip\""); )
for(i ...) {
myStringBuilder.add(String.format(template, station_code[]i, station_addr[i], camera_code[i], camera_ip[i] ); )
}
myStringBuilder.save(...)
module.exports = function(grunt) {
require('time-grunt')(grunt);
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
manifest: grunt.file.readJSON('src/manifest.json'),
config: {
tempDir:
grunt.cli.tasks[0] === 'tgut' ? 'build/tgut-temp/' : 'build/tgs-temp/',
buildName:
grunt.cli.tasks[0] === 'tgut'
? 'tgut-<%= manifest.version %>'
: 'tgs-<%= manifest.version %>',
},
copy: {
main: {
expand: true,
src: ['src/**', '!src/tests.html', '!src/js/tests/**'],
dest: '<%= config.tempDir %>',
},
},
'string-replace': {
debugoff: {
files: {
'<%= config.tempDir %>src/js/':
'<%= config.tempDir %>src/js/gsUtils.js',
},
options: {
replacements: [
{
pattern: /debugInfo\s*=\s*true/,
replacement: 'debugInfo = false',
},
{
pattern: /debugError\s*=\s*true/,
replacement: 'debugError = false',
},
],
},
},
debugon: {
files: {
'<%= config.tempDir %>src/js/':
'<%= config.tempDir %>src/js/gsUtils.js',
},
options: {
replacements: [
{
pattern: /debugInfo\s*=\s*false/,
replacement: 'debugInfo = true',
},
{
pattern: /debugError\s*=\s*false/,
replacement: 'debugError = true',
},
],
},
},
localesTgut: {
files: {
'<%= config.tempDir %>src/_locales/':
'<%= config.tempDir %>src/_locales/**',
},
options: {
replacements: [
{
pattern: /The Suspender/gi,
replacement: 'The Great Tester',
},
],
},
},
},
crx: {
public: {
src: [
'<%= config.tempDir %>src/**/*',
'!**/html2canvas.js',
'!**/Thumbs.db',
],
dest: 'build/zip/<%= config.buildName %>.zip',
},
private: {
src: [
'<%= config.tempDir %>src/**/*',
'!**/html2canvas.js',
'!**/Thumbs.db',
],
dest: 'build/crx/<%= config.buildName %>.crx',
options: {
privateKey: 'key.pem',
},
},
},
clean: ['<%= config.tempDir %>'],
});
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-string-replace');
grunt.loadNpmTasks('grunt-crx');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.registerTask('default', [
'copy',
'string-replace:debugoff',
'crx:public',
'clean',
]);
grunt.registerTask('tgut', [
'copy',
'string-replace:debugon',
'string-replace:localesTgut',
'crx:public',
'clean',
]);
};
Основная проблема в том, что метод stringWidth() возвращает неправильное значение ширины надписи, то же самое и с getHeight.
FontMetrics fm = g2.getFontMetrics(); //Получаем объект метрики, скорее всего шрифт тут ни разу не калибри, да?
g2.setColor(Color.BLACK);
g2.setFont(new Font ("Calibri", Font.PLAIN, (int)font)); //Ставим калибри
double vyska = fm.getLineMetrics(nadpis, g2).getHeight();
double delka = fm.stringWidth(nadpis); //удивляемся неправильным результатам.. полученным от объекта который вообще не от калибри шрифта взят.
- Что значит установить глобально grunt-cli
- Каталог src это папка src?
- Из какой консоли вызвать команды? CMD?
Как локализуте контент? Я не о простых надписях и прочем тексте которые меняется не ломая верстки. Красивый мультиязычный контент меняет верстку, точнее каждому языку нужна своя подача, шрифты и оформление.