Comments (6)
Hi @bennyboer ,
Can I work on this issue?
Thanks.
from thaw.
Hi there,
sure you can! Basically all cached stuff is under the user folder ~/.thaw
that can be fetched from the CacheUtil
class via a static method: getCacheRootDir()
.
For the CLI we use https://picocli.info/ which to my knowledge should have something like subcommands, but I am not that familar with it, so you can live it up as you wish! 😄
Let me know here or via e-mail if you need any help!
from thaw.
Hi,
Thanks for the instruction. 😄
I tried to run the application with the following command in Ubuntu
./gradlew :cli:run --args="--root-folder='../example/demo' --output='../example/demo/demo.pdf'"
But I am getting the following erro-
########################
### Thaw Project CLI ###
########################
### Configuration ###
Charset: 'UTF-8'
### Processing ###
Searching for Thaw files within folder at '/home/badal/Documents/codeProject/thaw/cli/../example/demo'...
Processing Thaw info file 'demo.tdi'...
Processing Thaw text file 'demo.tdt'...
Processing Thaw style file 'demo.tds'...
Oct. 14, 2020 10:57:52 P.M. org.apache.fontbox.ttf.CmapSubtable processSubtype14
WARNING: Format 14 cmap table is not supported and will be ignored
An exception occurred while trying to export the resulting document.
The exception message is: 'de.be.thaw.typeset.exception.TypeSettingException: Could not convert the document into the Knuth-Plass algorithm format'
de.be.thaw.export.exception.ExportException: de.be.thaw.typeset.exception.TypeSettingException: Could not convert the document into the Knuth-Plass algorithm format
at de.be.thaw.export.pdf.PdfExporter.export(PdfExporter.java:109)
at de.be.thaw.cli.CLI.call(CLI.java:236)
at de.be.thaw.cli.CLI.call(CLI.java:36)
at picocli.CommandLine.executeUserObject(CommandLine.java:1853)
at picocli.CommandLine.access$1100(CommandLine.java:145)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2255)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2249)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2213)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2080)
at picocli.CommandLine.execute(CommandLine.java:1978)
at de.be.thaw.cli.CLI.main(CLI.java:69)
Caused by: de.be.thaw.typeset.exception.TypeSettingException: Could not convert the document into the Knuth-Plass algorithm format
at de.be.thaw.typeset.knuthplass.KnuthPlassTypeSetter.convertToParagraphs(KnuthPlassTypeSetter.java:177)
at de.be.thaw.typeset.knuthplass.KnuthPlassTypeSetter.typesetWithConfig(KnuthPlassTypeSetter.java:89)
at de.be.thaw.typeset.knuthplass.KnuthPlassTypeSetter.typeset(KnuthPlassTypeSetter.java:77)
at de.be.thaw.export.pdf.PdfExporter.typeset(PdfExporter.java:219)
at de.be.thaw.export.pdf.PdfExporter.export(PdfExporter.java:107)
... 10 more
Caused by: de.be.thaw.core.document.convert.exception.DocumentConversionException: de.be.thaw.export.exception.ExportException: Could not find font family 'Arial' in OS installed fonts. If on Windows make sure that the fonts were installed for all users for Thaw to be able to pick it up.
at de.be.thaw.typeset.knuthplass.converter.context.ConversionContext.appendTextToParagraph(ConversionContext.java:198)
at de.be.thaw.typeset.knuthplass.converter.KnuthPlassConverter.initializeTextualNode(KnuthPlassConverter.java:153)
at de.be.thaw.typeset.knuthplass.converter.KnuthPlassConverter.initializeForNode(KnuthPlassConverter.java:118)
at de.be.thaw.typeset.knuthplass.converter.KnuthPlassConverter.initializeForNode(KnuthPlassConverter.java:126)
at de.be.thaw.typeset.knuthplass.converter.KnuthPlassConverter.initializeForNode(KnuthPlassConverter.java:126)
at de.be.thaw.typeset.knuthplass.converter.KnuthPlassConverter.convert(KnuthPlassConverter.java:100)
at de.be.thaw.typeset.knuthplass.KnuthPlassTypeSetter.convertToParagraphs(KnuthPlassTypeSetter.java:175)
... 14 more
Caused by: de.be.thaw.export.exception.ExportException: Could not find font family 'Arial' in OS installed fonts. If on Windows make sure that the fonts were installed for all users for Thaw to be able to pick it up.
at de.be.thaw.export.pdf.util.ExportContext.lambda$getFontVariantLocatorForStyleValue$0(ExportContext.java:322)
at java.base/java.util.Optional.orElseThrow(Optional.java:401)
at de.be.thaw.export.pdf.util.ExportContext.getFontVariantLocatorForStyleValue(ExportContext.java:322)
at de.be.thaw.export.pdf.util.ExportContext.getFontForNode(ExportContext.java:363)
at de.be.thaw.export.pdf.PdfExporter$3.getSpaceWidth(PdfExporter.java:270)
at de.be.thaw.typeset.knuthplass.converter.context.ConversionContext.appendTextToParagraph(ConversionContext.java:193)
... 20 more
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':cli:run'.
> Process 'command '/home/badal/.jabba/jdk/[email protected]/bin/java'' finished with non-zero exit value 4
Not sure if I need to do any additional set up.
from thaw.
Nothing wrong except for the font 😄
I have to admit that I have never run it on Linux so I hope it will work without problems.
It says:
Could not find font family 'Arial' in OS installed fonts. If on Windows make sure that the fonts were installed for all users for Thaw to be able to pick it up.
Since I was running the demo on Windows, I have set the font to Arial, so you have to find a font that is installed on your system or use another font (ending with *.ttf, since *.oft fonts are currently not supported). If you want to use an *.oft font you may just convert it to *.ttf since the only difference is how the glyphs are stored (Google "OTF to TTF online" for example).
However for Linux-Distributions Thaw will look into the following folders to find fonts:
/usr/share/fonts
/usr/local/share/fonts
~/.fonts
You can then update the file example/demo/demo.tds
where you need to change all font-family
properties to fonts that are known to your system (font-family
, inline-code-font-family
, line-number-font-family
).
Alternatively you could just point those properties to a folder of font files using something like font-family: Roboto:url(/usr/share/fonts/roboto);
(For example from Google fonts). You need to specify the name of the font family in front of url(...) since it will look for all fonts with name "Roboto Regular" (for normal style), "Roboto Bold" (for bold style), "Roboto Italic" (for italic style) and "Roboto Bold Italic" (for both bold and italic).
Hope it helps!
from thaw.
I changed the demo.tds
file with Ubuntu
font like below -
font-family: Ubuntu:url(/usr/share/fonts/truetype/ubuntu/);
inline-code-font-family: Ubuntu:url(usr/share/fonts/truetype/ubuntu/);
But I am getting the following error-
### Processing ###
Searching for Thaw files within folder at '/home/badal/Documents/codeProject/thaw/cli/../example/demo'...
Processing Thaw info file 'demo.tdi'...
Processing Thaw text file 'demo.tdt'...
Processing Thaw style file 'demo.tds'...
An exception occurred while trying to parse the provided style file at '/home/badal/Documents/codeProject/thaw/cli/../example/demo/demo.tds'.
The exception message is: 'de.be.thaw.style.parser.value.exception.StyleValueParseException: Could not resolve font file at 'usr/share/fonts/truetype/ubuntu/''
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':cli:run'.
> Process 'command '/home/badal/.jabba/jdk/[email protected]/bin/java'' finished with non-zero exit value 8
My directory has the following contents-
It says, it can't resolve the font file. But the files are in the folder. Any idea what can be wrong?
I will also switch to Windows in the meantime and finish #62.
from thaw.
Hi there,
I tested now on Ubuntu as well and had to fix some Font-related stuff.
My current working demo.tds
is:
document {
font-family: DejaVu Serif;
inline-code-font-family: Ubuntu Mono;
font-size: 13pt;
color: #222222;
// Set the document page dimensions
width: 210mm;
height: 297mm;
margin: 2cm 3cm;
}
page {
footer: footer; // We want the sub-folder "footer" to be included as footer to all pages
}
title {
font-family: Ubuntu;
font-size: 48pt;
text-align: center;
}
code {
font-family: Ubuntu Mono;
line-number-font-family: Ubuntu Mono;
}
h {
font-family: Ubuntu;
margin: 4mm 0 0 0;
padding: 0;
}
table-cell.footer-table {
border-width: 0.25mm 0 0 0; // Hide borders of the tables cells, except on the top
// Font settings
font-family: Ubuntu;
font-size: 11pt;
}
table-cell.footer-table:column(1) {
text-align: left;
}
table-cell.footer-table:column(*) {
text-align: right;
}
table-cell.person-table {
border-width: 0;
font-size: 13pt;
}
table-cell.person-table:even-rows {
background-color: rgb(0.98, 0.98, 0.98);
}
table-cell.person-table:row(1) {
font-variant: bold;
border-width: 0;
}
table-cell.person-table:cell(2, 1) {
border-radius-top: 2mm;
}
table-cell.person-table:cell(2, *) {
border-radius-right: 2mm;
}
table-cell.person-table:cell(*, 1) {
border-radius-left: 2mm;
}
table-cell.person-table:cell(*, *) {
border-radius-bottom: 2mm;
}
table-cell.person-table:column(1) {
text-align: right;
font-variant: italic;
}
I had to use DejaVu Serif for the document font-family because there is an unordered enumeration in the document that wants to use the asterisk operator character as item symbol, which Ubuntu does not have. Unfortunately there are some display problems with DejaVu Serif with uppercase letters. Probably should investigate that at some point 😄 .
You will have to install python and pygments as well (sudo apt-get install python3 python3-pygments) because the demo document uses syntax highlighting for code blocks.
Other than that it is working!
from thaw.
Related Issues (20)
- Fill style for headlines
- Allow adding a font file instead of just the name in the style file HOT 1
- Support Markdown as input format
- Thaw editor - Web interface HOT 1
- Include document meta-data to the exported PDF
- Support getting kerning information from the GPOS Table HOT 3
- Abandon font-variant property HOT 1
- Kerning Lookup using GPOS table seems to be very slow
- Setup application
- Default font settings per platform
- Java and Dependency Update
- Adjustable space width, stretchability and shrinkability
- Test penalty for hyphenation based on word length
- Wrong link bounding box
- Write own CSL implementation HOT 1
- Check using Rust instead of Java HOT 5
- CLI command to check text using offline LanguageTool server
- Check citeproc-java 3
- Check whether we can achieve something similar like Microtype
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from thaw.