aboutsummaryrefslogtreecommitdiff
path: root/font
Commit message (Collapse)AuthorAge
* Add DirectWrite font rasterizerBen Pye2019-04-23
| | | | | | | | | | | This adds a DirectWrite font rasterizer for Windows and enables subpixel rendering and hinting. It also completely replaces rusttype for font rendering on Windows, allowing Alacritty to use the native font stacks on all operating systems. Fixes #1673. Fixes #2316.
* Fix cursor colorsChristian Duerr2019-04-20
| | | | | | | | | | This fixes a recent regression in cfc20d4f34dca535654cc32df18e785296af4cc5 which broke cursor colors when specified in the `colors.cursor` field in the config. It also removes a lot of unneeded code from the font crate related to the cursor rendering. This fixes #2338.
* Fix cursor dimensions with font offsetChristian Duerr2019-04-19
| | | | | | | | | | | | | | Previously cursor dimensions were not calculated correctly when a font offset was specified, since the font offset was completely ignored. This has been fixed by moving all the cursor logic from the font into the Alacritty crate, applying the config's offsets before rasterizing the cursors. This has also fixed an issue with some cursors not being rendered as double-width correctly when over double-width glyphs. This fixes #2209.
* Fix duplicate resize eventsChristian Duerr2019-04-14
| | | | | | | | | | | | | | | | If a resize event is identical to the current size, it is no longer propagated but the resize is discarded immediately. To further prevent resizes when not necessary, the list of monitors is enumerated and the DPR of the first display is assumed to be the target DPR. This allows spawning a window with dimensions when the config has columns and lines specified and the window only needs to be resized if the estimated DPR is not correct. Fixes #1825. Fixes #204.
* Set maximum Rust version to 1.31.0Christian Duerr2019-04-09
| | | | | | | | | | | | | By setting the minimum Rust version and enforcing it with CI, Alacritty should hopefully make it possible for maintainers to package the application even on distributions which are not rolling release. The 1.31.0 target has been chosen here because it's the first version of the Rust 2018 release. Bumping this version in the future should be considered to be a breaking change and should only be done with caution and in consideration of the supported Rust versions of the major distributions available. This fixes #2277.
* Bump dependenciesChristian Duerr2019-04-03
|
* Revert daemon removalChristian Duerr2019-04-01
| | | | | | | | | | | This reverts the removal of the call to libc::daemon and instead adds an annotation to ignore the deprecation warnings on macos. This will not be an issue in the future since macOS is only discouraging the use of `daemon`, but I'm not aware of any intention to actually remove it. This fixes #2211.
* Add rustfmt style guideChristian Duerr2019-03-30
|
* Remove library lockfiles from gitChristian Duerr2019-02-04
| | | | | | | | | | Following Rust's standard, the lockfiles for Alacritty's sub-libraries have been removed. One instance of the deprecated `ATOMIC_USIZE_INIT` has also been removed. This fixes #2040.
* Fix crash on Windows (#2021)Christian Duerr2019-01-20
| | | | | | | | | | The rusttype backend did not properly support manually specifying font styles, but instead chose to panic when they are specified. The rusttype implementation now provides a proper implementation for handling `bold`, `italic` and `regular` font styles. This fixes #2020.
* Normalize Log Message StringsNathan Lilienthal2019-01-07
| | | | | | The general style for errors, warnings and info messages is to start with a capitalized letter and end without a period. The main exception is when dealing with nouns that are clearer with special case handling, e.g. "macOS failed to work" or "ioctl is borked".
* Fix line metricsChristian Duerr2018-12-31
| | | | | | | | | | | | | | Since bitmap fonts do not provide their own underline metrics, the self-calculated metrics which have been used for rusttype are now also used for bitmap fonts with freetype. The rusttype and bitmap fallback metrics have incorrectly offset the underline by the underline height. Since the position is already defined as the center point, that is not necessary. All rounding and clamping has also been removed from the font library, so that the raw values are reported now. The clamping and rounding is now done in the line renderer.
* Add proper underline and strikeout supportChristian Duerr2018-12-22
| | | | | This makes use of the new rectangle rendering methods used to display the colored visual bell to add proper underline and strikeout support to Alacritty.
* Upgrade to Rust 2018Joe Wilm2018-12-10
| | | | | This resolves a lot of NLL issues, however full NLL will be necessary to handle a couple of remaining issues.
* Use tool lints for clippy allow/deny lint attributesMatthias Krüger2018-12-07
|
* Update all dependenciesChristian Duerr2018-11-14
| | | This applies all breaking and non-breaking dependency updates.
* Upgrade Glutin to v0.19.0Matt Keeler2018-11-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some changes include: • Use the with_hardware_acceleration function on the ContextBuilder to not require the discrete GPU • Remove the LMenu and RMenu virtual key codes (winit 0.16.0 removed these because Windows now generates LAlt and RAlt instead • Replace set_cursor_state with hide_cursor (winit 0.16.0 removed the set_cursor_state function) • Replace GlWindow::hidpi_factor with GlWindow::get_hidpi_factor and change to expecting an f64 • Use the glutin/winit dpi size and position types where possible Glutin's dpi change event has been implemented. All size events now return logical sizes. As a result of that, the logical sizes are translated in the `display::handle_rezize` method so DPI scaling works correctly. When the DPI is changed, the glyph cache is updated to make use of the correct font size again. Moving a window to a different screen which is a different DPI caused a racing condition where the logical size of the event was sent to the `handle_resize` method in `src/display.rs`, however if there was a DPI change event before `handle_resize` is able to process this message, it would incorrectly use the new DPI to scale the resize event. To solve this issue instead of sending the logical size to the `handle_resize` method and then converting it to a physical size in there, the `LogicalSize` of the resize event is transformed into a `PhysicalSize` as soon as it's received. This fixes potential racing conditions since all events are processed in order. The padding has been changed so it's also scaled by DPR. The `scale_with_dpi` config option has been removed. If it's not present a warning will be emitted. The `winit` dependency on Windows has been removed. All interactions with winit in Alacritty are handled through glutin.
* Fix clippy issuesChristian Duerr2018-11-04
| | | | This resolves all existing clippy issues and removes some old `allow` annotations which aren't neccesary anymore.
* Add support for rendering cursors to rusttypeZac Pullar-Strecker2018-10-20
|
* Add support for Windows (#1374)Zac Pullar-Strecker2018-10-16
| | | | | | | | | | | | | | | Initial support for Windows is implemented using the winpty translation layer. Clipboard support for Windows is provided through the `clipboard` crate, and font rasterization is provided by RustType. The tty.rs file has been split into OS-specific files to separate standard pty handling from the winpty implementation. Several binary components are fetched via build script on windows including libclang and winpty. These could be integrated more directly in the future either by building those dependencies as part of the Alacritty build process or by leveraging git lfs to store the artifacts. Fixes #28.
* Bump fontconfig dependenciesJon Gjengset2018-09-30
| | | | | The patch uses the Cargo.toml patch section to force a single downstream choice of freetype-sys instead of relying on forks of other crates. It also bumps the fontconfig/freetype dependencies in the process.
* Update core-* dependenciesJeff Muizelaar2018-09-19
| | | | | | | | | | | The core-* dependencies have been updated and every breaking change has been resolved. These are the main changes which required adaption: - font_path() returns a PathBuf now - get_descriptors() returns an Option<CFArray> - get_advances_for_glyphs and get_glyphs_for_characters are now unsafe. All packages which did not have breaking updates have also been updated.
* Fix style issuesMatthias Krüger2018-09-17
|
* Fix clippy lints and run font tests on travisMatthias Krüger2018-07-25
| | | | | | This fixes some existing clippy issues and runs the `font` tests through travis. Testing of copypasta crate was omitted due to problens when running on headless travis-ci environment (x11 clipboard would fail).
* Add support for LCD-V pixel modeyshui2018-07-21
|
* Enable clippy in font/copypasta cratesMatthias Krüger2018-07-02
| | | | | Enabled clippy in the sub-crates font and copypasta. All issues that were discovered by this change have also been fixed.
* Fix clippy issuesChristian Duerr2018-07-01
|
* Move to cargo clippyChristian Duerr2018-06-17
| | | | | | | | | | | | | | Using clippy as a library has been deprecated, instead the `cargo clippy` command should be used instead. To comply with this change clippy has been removed from the `Cargo.toml` and is now installed with cargo when building in CI. This has also lead to a few new clippy issues to show up, this includes everything in the `font` subdirectory. This has been fixed and `font` should now be covered by clippy CI too. This also upgrades all dependencies, as a result this fixes #1341 and this fixes #1344.
* Upgrade dependenciesSam Rijs2018-02-28
| | | | | | | Upgrading glutin to the latest version allows building alacritty even with old XRandr versions. This is relevant for Debian machines (and other ancient systems).
* fix fallbacks in macos (#1099)Joe Moon2018-02-07
| | | fixes #1086
* Update core-text (#1061)Jeff Muizelaar2018-01-31
| | | This cleans up a bunch of code.
* Update dependenciesgolem1312018-01-26
| | | | | | Updated the version of some dependencies. This also changes to a new clippy version so clippy can work with the latest nightly compiler again. Some issues created by new lints have been fixed.
* Better character cell width with FreeType (#1029)Rachel K2018-01-21
| | | This should fix #1020, #710, and #902
* Prevent font_size_modifier from sinking too low (#994)Christian Duerr2018-01-05
| | | | | | | | | This replaces the `font_size_modifier` stored on the `Term` struct with a `font_size` field. With this change it is not necessary anymore to calculate the new font size from a delta but the current font size is always stored directly on the `Term` struct. As a result of this it is now possible to increase the font size by more than 127 steps at runtime. It also limits the minimum font size to 1, so issues with the `font_size_modifier` dropping far below font size 1 are resolved with this change. This fixes #955.
* Move custom cursor block on ftChristian Dürr2017-12-24
| | | | | Moved the custom cursor block on ft to the top, so no unnecessary operations are executed when trying to draw a custom cursor glyph.
* Use font_key provided with cursor glyphsChristian Dürr2017-12-24
| | | | | | | Previously it was assumed that the font_key for the normal font is always 0, because this assumption was a bit of a stretch, now the font_key provided with the glyph is used. This is always the bold, italics or normal font associated with the cell.
* Fix linux symbol sizeChristian Duerr2017-12-24
| | | | | | | | | With linux every box, line or underline should now have the pixel-perfect size with any font at any size. This uses the default font to get the size of the monospace box. It assumes that the face 0 is always the primary font, if this is not the case, this will probably break.
* Add box cursor to unfocused underline and beamChristian Duerr2017-12-24
| | | | | | | Because some people have requested this change, the beam and underline cursors now also transform into an empty box when the terminal loses focus. Like this there is one unique symbol to indicate that a terminal is not currently focused.
* Refactor darwin codeChristian Duerr2017-12-24
| | | | | | | The ascent calculation on darwin was more complicated than it needed to be. By running a `.ceil()` instead of adding one, checking if it's 0, substracting if it is, and then flooring it, a few instructions could be shaved off.
* Add custom box cursor for unfocused windowChristian Duerr2017-12-24
|
* Format cursor code and add documentationChristian Duerr2017-12-24
| | | | | | | | | | | | As requested a few comments have been added to the darwin code. There also was an off by one error in the ascent calculation which has been corrected. The beam cursor width has also been tweaked to be slightly slimmer in general. All code added in this PR has also been run through the default rustfmt to make sure the formatting is okay.
* Add custom cursors for macosChristian Duerr2017-12-24
| | | | | | The macos target now also supports the custom beam and underline cursors. The only thing left for this is now is testing and making sure it works with tiny fonts.
* Add custom beam cursorChristian Duerr2017-12-24
| | | | | | | | | | | | | | | | | | | | | | | | | | In issue jwilm/asacritty#31 a few people complained about Beam cursor being weird with their fonts, so to make all cursors uniform in alacritty, a custom cursor has been added for the Beam too. The beam cursor's height is always the full height of the monospace font glyph bounding box. The width depends on the font size. It is calculated using the width of the cell and dividing it by two. The block is always aligned at the far-left of the cell. The implementation is identical to the one of the underline cursor, but it has been refactored so the glyphs are created in `lib.rs`, which can be used by darwin/macos to implement these features too. A small bug in the underline cursor has also been fixed, until now the width was just using the width of the unicode character. Now it should be using the full width of the monospace glyph bounding box with every font. Here are some screenshots for the Beam cursor: ![Small](https://u.teknik.io/v1QH3.png) ![Normal](https://u.teknik.io/RTlp2.png) ![Big](https://u.teknik.io/DLu2M.png) ![Huge](https://u.teknik.io/pSAFX.png)
* Specify unicode code point explicitlyChristian Duerr2017-12-24
|
* Update comment to reference proper characterChristian Duerr2017-12-24
| | | | | | The unicode character comment has been updated to correctly reference the character instead of commenting on the variable that might be that character.
* Revert to old system for macosChristian Duerr2017-12-24
| | | | | | Because rendering with macos works differently, the old underline cursor is used for that. The cursor symbol has also been setup as a constant in the font project.
* Add custom underline cursorChristian Duerr2017-12-24
| | | | | | | | | | | | | | | As mentioned in jwilm/alacritty#931, it can be troublesome if a font has an underline symbol outside of the glyph's bounding box. This can lead to the underline disappearing at the bottom of the terminal. As a solution a symbol from the private use area was used as the character code for the underline symbol. Whenever this symbol is encountered, instead of rendering it, a custom block is rendered. In this implementation the block has the full character as width and sits flush with the bottom of the glyph's bounding box. The height is half the distance between the baseline and the bottom of the bounding box.
* Update euclid to v16Chet Gurevitch2017-12-23
|
* Update depsChet Gurevitch2017-12-23
|
* Remove debug printJoe Wilm2017-12-22
|